4.1.1 Collection<E>
java.util.Collection<E>
看API
Collection中的元素个数不固定,可以任意扩充。
Collection的常用子类
- List
- Set
- Queue
4.1.2 List<E>
java.util.List<E>
是Collection的子接口
List接口可以存放任意类型的数据,而且value可以重复。
List接口常用的子类:ArrayList,Vector
常用操作:
- 判断集合是否为空:boolean isEmpty()
- 查找指定对象是否存在:int indexOf(Object o),不存在返回-1
- List<String> lst = new ArrayList<String>();
- 元素个数:lst.size();
- 删除操作:lst.remove(index); //删除之后index有变化
- List<String> lst1 = new Vector<String>();
- 不需要线程安全的时候,用ArrayList
ArrayList VS Vector ArrayList Vector 推出时间 jdk1.2 jdk1.2 性能 采用异步处理方式,性能高 采用同步处理方式,性能低 thread safe 非线程安全 线程安全
4.1.3 Set<E>
Set接口中不能放入重复元素,但是可以排序。
Set接口的常用子类
- 散列存放:HashSet,排放无序
- Set<String> s = new HashSet<String>();
- s.add("A");
- s.add("B");
- s.add("C");
- s.add("D");
- s.add("E");
- s.add("F");
- System.out.println(s.contains("E"));
- System.out.println(s);
- 有序存放:TreeSet
- Set<String> s = new TreeSet<String>();
- s.add("A");
- s.add("B");
- s.add("C");
- s.add("D");
- s.add("E");
- s.add("F");
4.1.4 Iterator<E>
集合输出的标准做法是使用Iterator接口。
操作原理:
Iterator是专门的迭代输出接口,迭代输出就是将元素一个一个进行判断,判断其是否有内容,如果有则把内容取出
方法:
- bool hasNext(); 如果还有元素可以迭代,返回true
- E next(); 返回迭代的下一个元素
- void remove(); 从迭代器指向的Collection中移除迭代器返回的最后一个元素。
- List<String> lists = new ArrayList<String>();
- lists.add("A");
- lists.add("B");
- lists.add("C");
- lists.add("D");
- lists.add("E");
- Iterator<String> iter = lists.iterator();
- while (iter.hasNext()){
- String str = iter.next();
- if("A".equals(str)){
- iter.remove();
- } else{
- System.out.print(str + " ");
- }
- }
结果打印:B C D E 4
“A”被从lists中删除了
- 迭代输出的时候,不能用collection去删除元素,比如说lists.remove(3); ==> 错误
4.1.5 Map<T1,T2>
保存形式
key->value, key不允许重复
常用子类:
HashMap:无序排放,value不可重复
- Map<String,String> map = new HashMap<String, String>();
- map.put("k1","v1");
- map.<span style="background-color: rgb(255, 255, 153);">put</span>("k2","v2");
- map.put("k3","v3");
- String str = map.<span style="background-color: rgb(255, 255, 153);">get</span>("k3");
- if(map.<span style="background-color: rgb(255, 255, 153);">containsKey</span>("k1")){
- System.out.println("contains key");
- }
- if(map.<span style="background-color: rgb(255, 255, 153);">containsValue</span>("v3")){
- System.out.println("contains value");
- }
- Set<String> keySet = map.<span style="background-color: rgb(255, 255, 153);">keySet</span>();
- Iterator<String> iter = keySet.iterator();
- while (iter.hasNext()){
- System.out.println(iter.next());
- }
- Collection<String> lstValues = map.<span style="background-color: rgb(255, 255, 153);">values</span>();
- iter = lstValues.iterator();
- while (iter.hasNext()){
- System.out.println(iter.next());
- }
Hashtable:无序排放,value可以重复