Collection 接口是 List、Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。
Collection接口中有如下抽象方法:
①add(E e):像集合中添加一个元素,添加成功返回true,添加失败返回false
@Test
public void testAdd(){
Collection coll=new ArrayList();
coll.add(123);
coll.add("AA");
coll.add(new Date());
System.out.println(coll);
}
输出结果
[123, AA, Sun Dec 17 16:55:27 CST 2017]
②addAll(Collection c):将一个集合中的所有元素添加到此集合中,添加成功返回true,添加失败返回false
@Test
public void testAddAll(){
Collection coll = new ArrayList();
coll.add(123);
coll.add("AA");
coll.add(new Date());
Collection coll2 = new ArrayList();
coll2.add(456);
coll2.add("BB");
coll.addAll(coll2);
System.out.println(coll);
}
输出结果
[123, AA, Sun Dec 17 16:59:39 CST 2017, 456, BB]
③clear():清空集合
@Test
public void testClear(){
Collection coll = new ArrayList();
coll.add(123);
coll.add("AA");
coll.add(new Date());
System.out.println(coll);
coll.clear();
System.out.println(coll);
}
输出结果
[123, AA, Sun Dec 17 17:01:47 CST 2017]
[]
④size():返回此集合中元素的个数
@Test
public void testSize(){
Collection coll = new ArrayList();
coll.add(123);
coll.add("AA");
coll.add(new Date());
System.out.println(coll.size());
}
输出结果
3
⑤isEmpty():判断集合中是否包含元素,如果此集合不包含元素则返回true,否则返回false
@Test
public void testIsEmpty(){
Collection coll = new ArrayList();
coll.add(123);
coll.add("AA");
coll.add(new Date());
System.out.println(coll.isEmpty());
coll.clear();
System.out.println(coll.isEmpty());
}
输出结果
false
true
⑥contains(Object o):判断集合中是否包含指定的元素o,如果包含返回true,否则返回false
@Test
public void testContains(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
coll.add(new Date());
System.out.println(coll.contains(123));
System.out.println(coll.contains(new String("AA")));
System.out.println(coll.contains("BB"));
}
输出结果
true
true
false
注意:contains方法是通过对象的equals()方法判断是否包含的,比如上面的两个字符串"AA",这里肯定是两个对象,但是因为String类重写了Object的equals()方法,这里判断的是值是否相等,所以我们当我们需要判断集合是否包含一个自定义类的对象时,我们需要重写自定义类的equals()方法,否则它会默认使用Object的equals()方法判断。
⑦containsAll(Collection c):判断此Collection中是否包含指定的Collection中的全部元素,如果全部包含返回true
@Test
public void testContainsAll(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
coll.add(new Date());
Collection coll2 = new ArrayList();
coll2.add(123);
coll2.add(new String("AA"));
System.out.println(coll.containsAll(coll2));
coll2.add(456);
System.out.println(coll.containsAll(coll2));
}
输出结果
true
false
⑧hashCode():返回此集合的哈希码值,返回值是int类型
@Test
public void testHashCode(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
coll.add(new Date());
int code = coll.hashCode();
System.out.println(code);
}
输出结果
1674286887
⑨equals(Object o):判断此Collection与指定对象是否相等,相等返回true
@Test
public void testEquals(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
Collection coll2 = new ArrayList();
coll2.add(123);
coll2.add(new String("AA"));
System.out.println(coll.equals(coll2));
}
输出结果
true
⑩remove(Object o):在此Collection中移除指定的元素,成功返回true,失败返回false
@Test
public void testRemove(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
boolean flag = coll.remove(123);
System.out.println(flag);
System.out.println(coll);
}
输出结果
true
[AA]
⑪removeAll(Collection c):移除此Collection中也包含在指定Collection中的元素
@Test
public void testRemoveAll(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
Collection coll2 = new ArrayList();
coll2.add(3456);
coll2.add(new String("AA"));
boolean flag = coll.removeAll(coll2);
System.out.println(flag);
System.out.println(coll);
}
输出结果
true
[123]
⑫retainAll(Collection c):返回此Collection与指定Collection之间的交集元素并重新赋给此Collection
@Test
public void testRetainAll(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
Collection coll2 = new ArrayList();
coll2.add(3456);
coll2.add(new String("AA"));
boolean flag = coll.retainAll(coll2);
System.out.println(flag);
System.out.println(coll);
}
输出结果
true
[AA]
⑬toArray():返回包含此Collection中全部元素的数组
@Test
public void testToArray(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
Object[] objs = coll.toArray();
for(int i = 0;i < objs.length;i++){
System.out.println(objs[i]);
}
}
输出结果
123
AA
⑭toArray(T[ ] a):返回指定类型的包含此Collection中全部元素的数组
⑮iterator():返回此Collection的迭代器
@Test
public void testIterator(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(new String("AA"));
Iterator it=coll.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
输出结果
123
AA
Iterator迭代器
Iterator对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。
增强for循环
jdk1.5提供了增强for循环,其语法格式:
@Test
public void testForEach(){
Collection coll = new ArrayList();
coll.add("BB");
coll.add(new String("AA"));
coll.add(new String("CC"));
for(Object obj:coll ){
System.out.println(obj);
}
}
输出结果
BB
AA
CC
注意:for循环里的obj并不是集合里的元素本身,而是在这里定义了一个局部变量obj,并把集合的元素值赋给obj
看一个测试题
@Test
public void TestFor() {
String[] str = new String[]{"A","B","C"};
for (String myStr : str) {
myStr = "test";
System.out.println(myStr);
}
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
输出结果
test
test
test
A
B
C
增强for循环里并没有改变集合里元素的值,而是改的局部变量myStr的值。