直接看一张图,理解图中的结构其实容器大概就可以理解了
这里就将三个常见的容器接口类:Set List Map
重点:多态的实现,父类的指针指向子类的对象
Set
Set是Collection的子接口,实现Set接口的容器类的特点:无序,不重复
实现Set接口的类有:HashSet类
代码如下:
package com.zpchcbd.comtainer;
import java.util.HashSet;
import java.util.Set;
public class MyHashSet {
public static void main(String[] args){
Set s1 = new HashSet();s1.add("1");s1.add("2");s1.add("3");s1.add("a");
Set s2 = new HashSet();s2.add("a");s2.add("b");s2.add("c");
s1.retainAll(s2); //取交集
System.out.println(s1);
Set s3 = new HashSet(s2); //构造方法可以进行将其他容器的元素放进来
System.out.println(s3);
}
}
结果如图:
List
List是Collection的子接口,实现List接口的容器类的特点:有序,可重复
实现Set接口的类有:ArrayList LinkedList类
package com.zpchcbd.comtainer;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class MyLinkedList {
public static void main(String[] args) {
List l1 = new LinkedList<>();
for(int i=0;i<5;i++){
l1.add("a" + i);
}
System.out.println(l1);
Collections.reverse(l1);
System.out.println(l1);
Collections.shuffle(l1);
System.out.println(l1);
Collections.sort(l1);
System.out.println(l1);
}
}
Map
Map是Collection的子接口,实现Map接口的容器类的特点:键值对存储,存储键值对的时候,主键不能重复,若重复后面键的值替换前面的键的值
实现Set接口的类有:HashMap TreeMap类
package com.zpchcbd.comtainer;
import java.util.HashMap;
import java.util.Map;
public class MyHashMap {
public static void main(String[] args){
Map m = new HashMap<>();
m.put("aaa","111");
m.put("bbb", new Integer(222));
m.put("ccc","333");
int i = (Integer) m.get("bbb");
System.out.println(i);
System.out.println(m);
}
}
Iterator迭代器
在Collection接口中有个需要被实现的方法是Iterator<E> iterator();
,该方法会返回一个iterator迭代器,通过这个迭代器可以实现遍历当前容器中的所有元素
1、需要注意的就是在遍历迭代器的过程中,无法通过容器的方法remove来进行移除指定元素
public class MyIterator2 {
public static void main(String[] args) {
Collection cHashSet = new HashSet();
cHashSet.add(new Name("1111","aaaa"));
cHashSet.add(new Name("2222","bbbb"));
cHashSet.add(new Name("33","cc"));
Iterator iterator;
for(iterator = cHashSet.iterator();iterator.hasNext();){
Name name = (Name)iterator.next();
if(name.getFirstname().length() < 3){
iterator.remove();
}
}
System.out.println(cHashSet);
}
}