4.1 Collection,List,Set,Iterator,Map

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
 ArrayListVector
推出时间jdk1.2jdk1.2
性能采用异步处理方式,性能高采用同步处理方式,性能低
thread safe非线程安全线程安全

4.1.3 Set<E>

Set接口中不能放入重复元素,但是可以排序。

Set接口的常用子类

  • 散列存放:HashSet,排放无序
    [java]  view plain copy 在CODE上查看代码片 派生到我的代码片
    1. Set<String> s = new HashSet<String>();  
    2. s.add("A");  
    3. s.add("B");  
    4. s.add("C");  
    5. s.add("D");  
    6. s.add("E");  
    7. s.add("F");  
    8. System.out.println(s.contains("E"));  
    9. System.out.println(s);  
  • 有序存放:TreeSet
    [java]  view plain copy 在CODE上查看代码片 派生到我的代码片
    1. Set<String> s = new TreeSet<String>();  
    2. s.add("A");  
    3. s.add("B");  
    4. s.add("C");  
    5. s.add("D");  
    6. s.add("E");  
    7. s.add("F");  

4.1.4 Iterator<E>

集合输出的标准做法是使用Iterator接口。

操作原理:

Iterator是专门的迭代输出接口,迭代输出就是将元素一个一个进行判断,判断其是否有内容,如果有则把内容取出

方法:

  • bool hasNext(); 如果还有元素可以迭代,返回true
  • E next(); 返回迭代的下一个元素
  • void remove(); 从迭代器指向的Collection中移除迭代器返回的最后一个元素。
    [java]  view plain copy 在CODE上查看代码片 派生到我的代码片
    1. List<String> lists = new ArrayList<String>();  
    2. lists.add("A");  
    3. lists.add("B");  
    4. lists.add("C");  
    5. lists.add("D");  
    6. lists.add("E");  
    7. Iterator<String> iter = lists.iterator();  
    8. while (iter.hasNext()){  
    9.     String str = iter.next();  
    10.     if("A".equals(str)){  
    11.         iter.remove();  
    12.     } else{  
    13.         System.out.print(str + " ");  
    14.     }  
    15. }  

结果打印:B C D E 4

“A”被从lists中删除了

  • 迭代输出的时候,不能用collection去删除元素,比如说lists.remove(3); ==> 错误

4.1.5 Map<T1,T2>

保存形式

key->value, key不允许重复

常用子类:

HashMap:无序排放,value不可重复

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Map<String,String> map = new HashMap<String, String>();  
  2. map.put("k1","v1");  
  3. map.<span style="background-color: rgb(255, 255, 153);">put</span>("k2","v2");  
  4. map.put("k3","v3");  
  5. String str = map.<span style="background-color: rgb(255, 255, 153);">get</span>("k3");  
  6. if(map.<span style="background-color: rgb(255, 255, 153);">containsKey</span>("k1")){  
  7.     System.out.println("contains key");  
  8. }  
  9. if(map.<span style="background-color: rgb(255, 255, 153);">containsValue</span>("v3")){  
  10.     System.out.println("contains value");  
  11. }  
  12. Set<String> keySet = map.<span style="background-color: rgb(255, 255, 153);">keySet</span>();  
  13. Iterator<String> iter = keySet.iterator();  
  14. while (iter.hasNext()){  
  15.     System.out.println(iter.next());  
  16. }  
  17.   
  18. Collection<String> lstValues = map.<span style="background-color: rgb(255, 255, 153);">values</span>();  
  19. iter = lstValues.iterator();  
  20. while (iter.hasNext()){  
  21.     System.out.println(iter.next());  
  22. }  

Hashtable:无序排放,value可以重复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值