Collection类
Collection类:接口.表示一组对象,这些对象也称为Collection的元素.它提供更具体的子接口(如 Set 和 List)实现.
集合的继承体系图.
常用功能:
添加功能:
boolean add(Object e):给集合中添加指定的元素.
boolean addAll(Collection c):给集合中添加一个集合中的元素.
删除功能:
void clear():删除一个集合中的所有元素(暴力删除).
boolean remove(Object o):删除一个集合中的指定元素.
boolean removeAll(Collection c):删除指定集合中的所有元素.删除一个也是删除.
判断功能:
boolean contains(Object o):判断一个集合中是否包含一个指定的元素.
boolean containsAll(Collection c):判断一个集合中是否包含另一个集合.包含所有元素.
boolean isEmpty():判断集合是否为空.
交集功能:
boolean retainAll(Collection c):A与B集合做交集,交集的元素去A集合.返回值boolean表达的意识是A集合中的元素是否发生变化,如果发生变化,就返回true;否则,false.
获取功能:
int size():获取集合中的元素数.
Iterator<E> iterator():迭代器
迭代器原理图:
转化功能:
Object[ ] toArray():将集合转化为数组.
相关代码:
package weotes;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionDemo {
public static void main(String[] args) {
Collection c=new ArrayList();
Collection c2=new ArrayList();
c.add("I");
c.add("Love");
c.add("立华奏");
c2.add("you");
//添加功能
System.out.println("add:"+c.add("you"));
System.out.println("addAll:"+c.addAll(c2));
System.out.println("-------------");
//删除功能
System.out.println("remove:"+c.remove("you"));
System.out.println("removeAll:"+c.removeAll(c2));
System.out.println("-------------");
//判断功能
System.out.println("contains:"+c.contains("you"));
System.out.println("containsAll:"+c.containsAll(c2));
System.out.println("-------------");
//交集功能:
System.out.println("retainAll:"+c.retainAll(c2));
System.out.println("-------------");
//获取功能size
System.out.println("c:"+c.size());
System.out.println("c2:"+c2.size());
System.out.println("-------------");
//输出
System.out.println("c:"+c);
System.out.println("c2:"+c2);
System.out.println("-------------");
//迭代器
for(Iterator it=c2.iterator();it.hasNext();){
String s=(String)it.next();
System.out.println(s+"---"+s.length());
}
System.out.println("-------------");
//转化功能
Object[] obj=c2.toArray();
for(int i=0;i<obj.length;i++){
String s=(String)obj[i];
System.out.println(s);
}
}
}
结果为:add:true
addAll:true
-------------
remove:true
removeAll:true
-------------
contains:false
containsAll:false
-------------
retainAll:true
-------------
c:0
c2:1
-------------
c:[]
c2:[you]
-------------
you---3
-------------
you
集合和数组的区别?
1)长度的区别:
数组:长度是固定的;
集合:长度是可变的
2)存储数据类型的区别:
数组:可以存储引用类型,可以存储基本数据类型
集合:只能存储引用类型
3)存储元素的区别
数组:在同一个数组中,只能存储同一种数据类型的元素;
集合:可以 存储多种数据类型的元素;
List集合:List集合是一个有序的集合(存储元素和取出元素是一致的!),该元素中的元素是可以重复的.
特有功能:
添加功能:
void add(int index,Object element):在列表的指定位置插入指定元素.
删除功能:
Object remove(int index):删除列表指定位置的元素,返回被删除的元素.
获取功能:
ListIterator listIterator():列表迭代器:List集合的专有遍历方式
列表迭代器接口中有以下几个方法:
boolean hasNext():判断是否有下一个可以迭代的元素(正向遍历)
Object next():如果有可以遍历的元素,就获取这个元素
boolean hasPrevious():判断是否有上一个可以迭代的元素(逆向遍历)
Object previous():如果有上一个可以迭代的元素,就获取上一个元素.
注意: 要使用逆向遍历,前提必须有正向遍历存在,直接使用逆向遍历,没有意义!
Object get(int index):返回列表中的指定位置的元素.
替换:
set(int index,Object element):用指定元素替换列表指定位置的元素.
相关代码:
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListDemo {
public static void main(String[] args) {
List list=new ArrayList();
// 添加功能
list.add("I");
list.add("Love");
list.add("立华奏");
list.add(2, "you");
//获取功能get
System.out.println("get:"+list.get(2));
System.out.println("-------------");
// 删除功能
list.remove(2);
// List专有迭代器
ListIterator it=list.listIterator();
while(it.hasNext()){
String s=(String)it.next();
System.out.println(s+"---"+s.length());
}
System.out.println("-------------");
//逆向遍历
while(it.hasPrevious()){
String s=(String)it.previous();
System.out.println(s+"---"+s.length());
}
System.out.println("-------------");
//替换功能set
System.out.println("set:"+list.set(2, "you"));
}
}
结果为:get:you
-------------
I---1
Love---4
立华奏---3
-------------
立华奏---3
Love---4
I---1
-------------
set:立华奏
注意:java.util.ConcurrentModificationException:并发修改异常:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
原因:当前我们用迭代器去遍历元素,使用集合添加的元素,对于迭代器不知道集合添加了这个元素,所以会发生这个异常
描述:使用迭代器去遍历集合,是不能直接集合添加元素!
解决方案:1)使用迭代器遍历集合,使用迭代器添加元素.
2)使用集合遍历,使用集合添加元素.