Jdk提供了一些特殊的类,用来保存数量不确定的对象,存储任意类型对象,长度可变。这些类统称为集合。
集合类位于Java.util包中,按存储结构分为Collection单列集合和Map双列集合。
Collection是单列集合的根接口,有两个重要的子接口List,Set。
-
List接口特点:元素有序可重复。
主要接口实现类:ArrayList、LinkedList
-
Set接口特点:元素无序,不可重复。
主要接口实现类:HashSet、TreeSet
Map是双列集合的根接口,存储具有键Key,值Value映射关系的元素,每个元素都包含一个键-值对。可以通过指定键找到对应的值。
- 主要接口实现类:HashMap,TreeMap
Collection:
Collection它是一个接口,不能直接实例化使用,只能通过它的子类来完成。
Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。
参考API文档:Collection接口的常用方法
Iterator<E> iterator()//返回此集合中的元素的迭代器。 没有关于元素返回顺序的保证(除非这个集合是提供保证的某个类的实例)。
boolean containsAll(Collection<?> c) //如果此集合包含指定 集合中的所有元素,则返回true。
boolean removeAll(Collection<?> c) //删除指定集合中包含的所有此集合的元素(可选操作)。
boolean addAll(Collection<? extends E> c) //将指定集合中的所有元素添加到此集合(可选操作)。
boolean retainAll(Collection<?> c) //仅保留该集合中同时包含在指定集合中的对象。
<T> T[] toArray(T[] a) //返回包含此集合中所有元素的数组; //入口参数必须为数组类型的实例,而且已经被初始化,它用来指定要获得的数组类型。
boolean add(E e) //添加指定对象到集合中
/*
Iterator<E> iterator()
boolean addAll(Collection<? extends E> c)
*/
package collection.test;import java.util.*;
public class Test {public static void main(String[] args) {String a = "A";String b = "B";String c = "C";Collection<String> list = new ArrayList<String>();list.add(a);list.add(b);Collection<String> list2 = new ArrayList<String>();list2.addAll(list);//将list中所有对象添加到list2中list2.add(c);Iterator<String> it = list2.iterator();while(it.hasNext()) {String str = it.next();System.out.println(str);}}
}
/*
A
B
C
*/package collection.test;import java.util.*;
public class Test1 {public static void main(String[] args) {String a = "A", b = "B", c= "C";Collection<String> list = new ArrayList<String>();list.add(a);list.add(b);Collection<String> list2 = new ArrayList<String>();list2.add(b);list2.add(c);boolean isContains = list.removeAll(list2);//从list中移除包含在list2中的对象System.out.println(isContains);Iterator<String> it = list.iterator();while(it.hasNext()) {String str = it.next();System.out.println(str);}}
}
/*
true
A
*/package collection.test;
import java.util.*;
public class Test2 {public static void main(String[] args) {String a = "A", b = "B", c= "C";Collection<String> list = new ArrayList<String>();list.add(a);list.add(b);Collection<String> list2 = new ArrayList<String>();list2.add(b);list2.add(c);boolean isContains = list.containsAll(list2);//查看list中是否包含list2中的所有对象System.out.println(isContains);//输出false}
}package collection.test;import java.util.*;public class Test3 {public static void main(String[] args) {String a = "A", b = "B", c= "C";Collection<String> list = new ArrayList<String>();list.add(a);list.add(b);Collection<String> list2 = new ArrayList<String>();list2.add(b);list2.add(c);boolean isContains = list.retainAll(list2);//仅保留list和list2都有的对象。System.out.println(isContains);//存在符合条件的返回true。Iterator<String> it = list.iterator();while(it.hasNext()) {String str = it.next();System.out.println(str);}}
}
/*
true
B
*/package collection.test;import java.util.ArrayList;
import java.util.Collection;public class Test4 {public static void main(String[] args) {String a = "A", b = "B", c= "C";Collection<String> list = new ArrayList<String>();list.add(a);list.add(b);String strs[] = new String[1];//创建一个String类型的数组,而且已经被初始化。strs是可以存储一个String对象的数组。String strs2[] = list.toArray(strs);//生成一个String类型的数组str2,其元素是集合list的所有对象。for(int i = 0; i < strs2.length; i++) {System.out.println(strs2[i]);}}
}
/*
A
B
*/