Java Collection框架中包含了大量集合接口以及这些接口的实现类和操作他们的方法。主要提供了List(列表)、Queen(队列)、Ser(集合)、Stack(栈)和Map(映射表)。其中,List(列表)、Queen(队列)、Ser(集合)、Stack(栈)都是继承Collection接口。
下面介绍Set、List和Map3个接口。
1.Set表示数学意义上的集合概念(即不会出现重复元素)。该接口有两个实现类:HashMap、TreeMap(两个接口都不会出现重复的元素)。
(1). HashMap
public static void main(String[] args) {
Set set=new HashSet() ;
set.add(1);
set.add(1);
set.add(3);
set.add(4);
set.add(6);
set.add(5);
System.out.println(set);
}
输出结果为:[1, 3, 4, 5, 6]。
说明一下:添加了6个元素,其中添加了两个1,输出的时候只输出了一个1。添加对象的时候,是无序添加的,但是还是按顺序输出的(注:jdk老版本可能不会排序)。
(2) TreeSet
TreeSet是实现了SortedSet接口的,所以TreeSet中的容器是有序的。**
Set treeSet=new TreeSet();
treeSet.add(78);
treeSet.add(12);
treeSet.add(12);
treeSet.add(99);
treeSet.add(1);
System.out.println(treeSet);```
输出结果:[1, 12, 78, 99]
说明:重复元素不会重复输出,具有排序功能。
2.List称为有序(注意:这个有序是只按照顺序存放,不是说放进去的元素会排序)的Collection。List能付每个列表中的元素的插入和删除位置进行精确的控制,还可以保存重复的对象。
(1)LinkedList,实现了List接口
public static void main(String[] args) {
LinkedList`` linkedList=new LinkedList<>();
linkedList.add(127);
linkedList.add(25);
linkedList.add(25);
linkedList.add(567);
System.out.println(linkedList);
}
结果:[127, 25, 25, 567]
说明:大小无序放进去,放进来两个25元素。重复的元素并没有隐藏且输出的顺序是按照添加元素的信息输出来的。
既然List能够对元素的插入和元素的位置进行精确的控制,那么下面这段代码应该能够说明这点。
public static void main(String[] args) {
LinkedList linkedList=new LinkedList<>();
linkedList.add(127);
linkedList.add(25);
linkedList.add(25);
linkedList.add(567);
System.out.println(linkedList);
//删除第3个位置的元素
linkedList.remove(3);
System.out.println(linkedList);
//在第2个位置插入567
linkedList.add(2, 567);
System.out.println(linkedList);
}
结果:
[127, 25, 25, 567]
[127, 25, 25]
[127, 25, 567, 25]`
(2)ArrayList
ArrayList arrayList=new ArrayList<>();
arrayList.add("A");
arrayList.add("E");
arrayList.add("C");
arrayList.add("B");
arrayList.add("C");
System.out.println(arrayList);
输出结果:[A, E, C, B, C]
3.Vector
Vector vector=new Vector<>();
vector.add(5);
vector.add(2);
vector.add(3);
vector.add(2);
vector.add(1);
System.out.println(vector);
输出结果:[5, 2, 3, 2, 1]
3.Map
Map提供了一个从键映射到值的数据结构,它可以保存键值对象,其中值可以重复,但是键是唯一的。Java中有很多实现该接口的类:HashMap、TreeMap、LinkedHashMap等。虽然它们都实现了相同的接口,但是执行效率不同。
(1)HashMap
public static void main(String[] args) {
HashMap hashMap=new HashMap<>();
hashMap.put(1, "A");
hashMap.put(2, "B");
hashMap.put(2, "C");
hashMap.put(4, "A");
hashMap.put(5, "E");
System.out.println(hashMap);
}
结果:{1=A, 2=C, 4=A, 5=E}
说明:HashMap由(key,value)组成,key就相当于一个钥匙,value就相当于一个门,一个钥匙对应一个门。多个钥匙可以对应同一个门,但是多个门不能用同一把钥匙打开。
在上面的测试中,put进了5个元素,其中有key=2,出现了两次,但是取值是取最后的2对应的值。而value可以重复出现。总的来说,就是key不能重复。
(2)TreeMap
TreeMap treeMap=new TreeMap<>();
treeMap.put(5, "A");
treeMap.put(4, "B");
treeMap.put(3, "C");
treeMap.put(2, "D");
treeMap.put(1 ,"E");
System.out.println(treeMap);
结果:{1=E, 2=D, 3=C, 4=B, 5=A}
说明:TreeMap具有自动排序功能,会按照key的值大小进行排序。
总结:
1.Set接口的实现有HashSet,TreeSet。Set特点:不会有重复元素
2.List接口的实现有LinkedList、ArrayList、Vector。List特点:存放按照顺序存放。
3.Map接口的实现HashMap、TreeMap。Map特点:由键映射值,键不能重复,值可以重复。
4.Tree接口自带sorted()方法,所以TreeSet、TreeMap都是自带元素排序功能的。
———-20170926补充
关于java中“:”的使用方法
Set mSet=new HashSet<>();
mSet.add(1);
mSet.add(2);
mSet.add(5);
mSet.add(9);
for(Object o:mSet){
if((Integer)o>2){
System.out.println(o);
}
}
添加的用法还是一样,但是遍历的时候使用“:”来进行for(对象类型:集合(数组也可以)){
…………………
}
5
9