码迷,mamicode.com
首页 > 其他好文 > 详细

集合框架,未完

时间:2017-08-07 00:13:33      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:out   abc   结束   存在   pre   封装   java   obj   接口   

集合类的由来:
对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储。

集合特点:
1,用于存储对象的容器。(存的是对象的地址)
2,集合的长度是可变的。
3,集合中不可以存储基本数据类型值。 (只能存对象)


 Collection子接口

Collection接口
  |--List接口:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。
  |--Set接口:无序,元素不能重复。

 

List

有一个共性特点就是都可以操作角标,list集合可以完成对元素的增删改查。

 


Iterator接口

对 collection 进行迭代的迭代器,即对所有的Collection容器进行元素取出的公共接口。

该迭代器对象必须依赖于具体容器,因为每一个容器的数据结构都不同,所以该迭代器对象是在具体容器中进行内部实现的。(内部类,可以看具体容器的源码)

对于使用容器者而言,具体的实现方法不重要,只要通过具体容器获取到该实现的迭代器的对象即可,也就是iterator方法,而不用new。(Iterator<String> ite=list.iterator();)

 

技术分享

 

小知识:使用迭代器过程中while和for的区别

 1 第一种
 2 Iterator<String> ite=list.iterator();
 3      while(ite.hasNext())//判断下一个元素之后有值
 4      {
 5          System.out.println(ite.next());
 6      }
 7 第二种
 8 Iterator<String> ite=list.iterator();
 9 for(Iterator it = coll.iterator(); it.hasNext(); ){
10             System.out.println(it.next());
11         }

第一种方法while循环结束后迭代器对象还在内存中存在,还能继续使用迭代器对象。

第二种方法for循环结束后迭代器对象就消失了,清理了内存,开发中第二种常用。

 

Iterator子接口

  |--ListIterator接口(列表迭代器)

适用情况例子:(出现ConcurrentModificationException异常时)

出现异常情况代码:

Iterator it = list.iterator();
        while(it.hasNext()){
            
            Object obj = it.next();//java.util.ConcurrentModificationException
                            //在使用迭代器的过程中使用集合操作元素,容易出现异常。
                        //可以使用Iterator接口的子接口ListIterator来完成在迭代中对元素进行更多的操作。 
            
            if(obj.equals("abc2")){
                list.add("abc9");
            }
            else
                System.out.println("next:"+obj);
        }
        System.out.println(list);

  

解决办法代码:

public static void main(String[] args) {

        List list = new ArrayList();        
        list.add("abc1");
        list.add("abc2");
        list.add("abc3");
        
        System.out.println("list:"+list);
        ListIterator it = list.listIterator();//获取列表迭代器对象
        //它可以实现在迭代过程中完成对元素的增删改查。
        //注意:只有list集合具备该迭代功能.
                
        while(it.hasNext()){            
            Object obj = it.next();            
            if(obj.equals("abc2")){
                it.add("abc9"); //ListIterator提供了add方法
            }
        }

  

 

集合框架,未完

标签:out   abc   结束   存在   pre   封装   java   obj   接口   

原文地址:http://www.cnblogs.com/kkkky/p/7296284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!