1.集合框架的概念
Java集合框架(Java Collections Framework简称JCF)是为表示和操作集合,而规定的一种统一的标准的体系结构。集合框架包含三大块内容:对外的接口、接口的实现和对集合运算的算法。数组和集合的区别:数组是定长的,集合是不定长的。
2.Collection集合
2.1 Collection集合默认可以存储任何类型的元素
2.2 Collection可以重复添加,并且可以存储空值null
2.3 不能根据下标获取单个元素
2.4 Collection的方法使用
Collection coll = new ArrayList();//定义Collection接口变量,指向其实现对象Arraylist
coll.add("a");//添加String类型的a
coll.add(5);//添加整形的5
coll.add('b');//添加char类型的b
Collection colls = new ArrayList(2);
colls.add(2);
colls.add(3);
coll.addAll(colls);
System.out.println(coll);
boolean b = coll.containsAll(colls);//判断coll中是否包含colls中的所有元素
System.out.println(b);
int size = coll.size();//获取coll的长度
System.out.println(size);
coll.remove(5);//删除2这个元素
coll.removeAll(colls);//批量删除coll中的colls的元素
System.out.println(coll);
boolean empty = coll.isEmpty();//判断coll是否为空
System.out.println(empty);
coll.clear();//清除coll中的所有元素
boolean empty1 = coll.isEmpty();
System.out.println(empty1);
3.List
3.1 List集合是有序集合: 数据的添加和存储次序一致, List集合可以存储重复的数据, List集合中的数据可以通过下标访问
3.2 ArrayList实现类的用法
3.2.1 实现了list接口,可以动态扩展,可以使用下标进行访问数据,查找较快,删除和插入较慢,ArrayList的底层就是数组,对数组进行了封装,多线程访问的时候是不安全的。
List list = new ArrayList(5);//创建长度为五的Arraylist对象
list.add("a");//在集合中添加一个String类型的a
list.add(5);//在集合中添加一个整形的数字5
list.add('a');//添加一个char类型的a
list.add(new Date());//添加一个Date类型的数据
list.add("a");//可以添加重复的数据
//当添加的内容超过数组的长度后会自动扩容
list.add("不是秋天的邱");
System.out.println(list);//输出集合的内容
list.set(3,"好一个秋");//将设置下标为3的内容为好一个秋
list.remove(new Date());//移除集合中的Date数据
System.out.println(list);
list.remove(1);//移除下标为1的内容
List listTwo = new ArrayList(2);
listTwo.add("秋天的秋");
listTwo.add(1,"湫湫湫湫");
list.addAll(listTwo);//将集合listTwo中的所有内容添加到list集合中
System.out.println(list);
System.out.println(list.contains("不是秋天的邱"));//查找集合中是否存在“不是秋天的秋”
System.out.println(list.containsAll(listTwo));
list.get(2);//获取下标为2的内容
list.indexOf("a");//查找a首次出现的位置
System.out.println(list.size());//输出集合的长度
System.out.println(list.isEmpty());//判断集合是否为空
int i = list.hashCode();//返回list的哈希码值
System.out.println(i);
list.clear();//清空集合
3.3LinedList和Vector实现类的用法
LinkedList: 具有List的特征,底层以链表结构实现,可以进行头尾元素的添加删除
Vetor: 与ArrayList功能一致,在多线程环境下,比ArrayList安全。性能比较低。
LinedList的用法:
LinkedList linkedList=new LinkedList();
linkedList.add("a");//添加字符型的a
linkedList.add(5);//添加整型数据
linkedList.add(new Date());//添加时间类型数据
linkedList.addFirst(1);//在头部添加数据
linkedList.addLast("尾");//在尾部添加数据
linkedList.set(2,"hello");//在下标为2的地方插入元素
System.out.println(linkedList.get(2));//获取下标为2的元素内容
linkedList.getFirst();//获取第一个数据 即linkedlist【0】
linkedList.getLast();//获取最后一个元素的内容
LinkedList linked = new LinkedList(); //LinkedList不能指定长度
linked.add(11);
linked.add(10);
linkedList.addAll(linked);//批量添加元素 即添加linked中是所有元素
System.out.println(linkedList);
linkedList.remove(2);//删除下标为2的元素的内容
System.out.println(linkedList);
System.out.println(linked);
linkedList.addAll(0,linked);//在下标为2的地方放批量插入数据
System.out.println(linkedList);
linkedList.removeFirst();//删除头部元素
linkedList.removeLast();//删除尾部元素
System.out.println(linkedList);