目录
30.1什么是集合?
30.1.2为什么使用集合
30.1.3自己创建一个集合类
30.1.3 集合框架有哪些?
30.1.2使用ArrayList集合
30.2增加元素
30.3查询的方法
30.4删除
30.5 修改
30.6泛型
30.1什么是集合?
- 我们之前讲过数组,数组中它也可以存放多个元素。
- 集合就是一个容器,里面可以存放若干个元素。
30.1.2为什么使用集合
数组的长度是固定,而且数组中数据类型必须统一。
int[] arr=new int[10];
引入了集合。可以存放。
集合它是一个类,只是该类中存在增加元素,删除元素,修改元素,统计元素的个数等方法。
30.1.3自己创建一个集合类
它也可以无限的增加元素,增加任意类型的元素。
package demo01;import java.util.Arrays;public class MyArray {//存放集合元素的private Object [] arr=new Object[3];//表示集合中元素的个数private int size;/*** 添加元素* @param o*/public void add(Object o){//判断数组是否已满。if(size==arr.length){//扩容--并把原来数组中得元素放入新数组arr=Arrays.copyOf(arr,arr.length*2);}arr[size]=o;size++;}/*** 根据下标获取指定元素* @param index* @return*/public Object get(int index){if(index<0||index>=size){throw new RuntimeException("给定下标越界");}return arr[index];}//获取集合的长度--元素的个数public int size(){return size;}
}
你都可以想到创建一个类,该类可以不断的增加元素,jdk官方一定也会想到创建一个类,可以不断的增加元素。官方会根据不同的数据结构创建不同的类。而官方提供的这些类---集合框架。
30.1.3 集合框架有哪些?
底层也是使用数组。允许元素重复,而且根据下标获取元素,查询效率非常高。删除和添加慢。
30.1.2使用ArrayList集合
必须创建该类的对象。
public ArrayList(){} 默认分配数组的个数10个
public ArrayList(int size){} 人为指定数组元素的个数
30.2增加元素
public class Test02 {public static void main(String[] args) {ArrayList list = new ArrayList();list.add("java01");list.add("java02");list.add(15);list.add(25.6);list.add(true);//往集合尾部追加。list.add(3,"欧炜健");list.add(3,"赖林龙");System.out.println(list);}
}
30.3查询的方法
package demo02;import java.util.ArrayList;
import java.util.Objects;public class Test {public static void main(String[] args) {ArrayList list=new ArrayList();list.add(new People("赖林龙",18));list.add(new People("胡荣纯",17));list.add(new People("吴韩煜",19));list.add(new People("赖林龙",18));boolean is = list.contains(new People("胡荣纯", 17));System.out.println(is); //equals方法比较。int i = list.indexOf(new People("吴韩煜", 19));System.out.println("第一次出现的位置:"+i);//求集合中元素的个数:int size = list.size();System.out.println("集合中元素的个数:"+size);//遍历集合for(int a=0;a<list.size();a++){Object o = list.get(a);System.out.println(o);}System.out.println("=================================增强循环==========================");for (Object o : list) {System.out.println(o);}}
}
class People{private String name;private int age;@Overridepublic String toString() {return "People{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o){//this//表示调用当前方法的对象//重写equalsif(this==o){return true;}if(! (o instanceof People)){return false;}People p= (People) o;if(p.getAge()==this.getAge()&&p.getName().equals(this.getName())){return true;}return false;}public People() {}public People(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
定义一个学生类: name,school,age
创建一个集合对象ArrayList. 里面存放5个学生。
<1>判断某个学生对象是否在集合中
<2>查看指定学生第一次在集合中出现的位置
<3>求集合中元素的个数
<4>遍历集合---使用两种方式
30.4删除
ArrayList list=new ArrayList();list.add(new People("赖林龙",18));list.add(new People("胡荣纯",17));list.add(new People("吴韩煜",19));list.add(new People("赖林龙",18));list.add(new People("吴韩煜",19));list.remove(3);//根据下标删除指定的元素list.remove(new People("吴韩煜",19));//根据内容移除,第一个。list.clear();//清空内容System.out.println("=================================增强循环==========================");for (Object o : list) {System.out.println(o);}
30.5 修改
ArrayList list=new ArrayList();list.add(new People("赖林龙",18));list.add(new People("胡荣纯",17));list.add(new People("吴韩煜",19));list.add(new People("赖林龙",18));list.add(new People("吴韩煜",19));list.set(2,new People("张学友",16));//修改指定位置上的内容List list1 = list.subList(1, 3); //截取集合System.out.println(list1);
30.6泛型
<E>:表示泛型标识符---在创建类对象时指定数据类型,如果没有指定那么该类型为Object.
public class Test03 {public static void main(String[] args) {//规定集合中存放的数据类型。--获取元素是就是对应的类型。ArrayList<People> list=new ArrayList<>();list.add(new People("赖林龙",18));list.add(new People("胡荣纯",17));list.add(new People("吴韩煜",19));list.add(new People("无效五",19));list.add(new People("赖林龙",18));list.add(new People("吴志雄",18));list.add(new People("吴韩煜",19));list.add(new People("吴三桂",18));//找到集合中所有姓吴的for (People people : list) {boolean b = people.getName().startsWith("吴");if(b){System.out.println(people);}}}
}