集合框架,未完

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合框架,未完相关的知识,希望对你有一定的参考价值。

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

集合特点:
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方法
            }
        }

  

 









以上是关于集合框架,未完的主要内容,如果未能解决你的问题,请参考以下文章

集合代码1(未完 06)

Redis五大数据类型(未完)

MNIST手写数字图片识别(线性回归CNN方法的手工及框架实现)(未完待续)

Java 集合Collection——初学者参考,高手慎入(未完待续)

原创从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端web端

置换群(本蒟蒻瞎BB的)(未完)