java基础--迭代器、ArrayList与LinkedList、去重方法的解析
2018-05-19 11:03
330 查看
一.集合中的一些方法
1.addAll将指定的集合中的所有元素都添加到该集合中
与add的区别:add是将指定集合作为一个元素添加进去。
2.removeAll
删除此集合与指定集合中元素的交集
3.retainAll
保留此集合与指定集合中元素的交集
注意:这三种方法都有boolean类型的返回值,如果调用该方法的集合发生改变,则返回true,反之,则返回false。
二.迭代器
主要作用:遍历集合//从集合中获取迭代器 Iterator iterator = c.iterator(); //判断是否有下一个元素 boolean rel = iterator.hasNext(); System.out.println(rel); //如果有下一个元素 if (rel) { //获取集合中的元素 Object next = iterator.next(); System.out.println(next); }实现的方法
实际上,集合内部有一个指针,当使用迭代器调用hasNext方法时,会判断下一个位置是否为空,如果不为空,则迭代器将调用Next方法将指针向下移一位,并获取该位置元素。
三.List中特有的几个方法
1.add(int index,Object obj)在指定位置添加元素,注意不能超过集合的size
2.set(index,obj)
替换该角标位置的元素
3.get(int index)
获取该角标对应的元素
4.remove(int index)
删除对应角标的元素,并返回该元素
四.List特有的迭代器
ListIterator方法
当想通向集合中添加元素并通过迭代器遍历时,如果直接使用迭代器遍历,会出现ConcurrentModificationException并发修改异常,这时候应该通过list中的ListIterator添加元素方法,就能避免异常。
五.去重方法解析
去重方法的核心语句是if(!list.contains()),所以核心方法是contains方法,而这个方法的核心是通过调用Object的equals方法,而这个方法比较的是对象的地址,但使用去重方法是一般会创建一个新的对象来存放去重后的集合,所以地址必然不一样,所以会去重失败。
所以需要我们根据实际需求重写equals方法来进行去重。
六.ArrayList与LinkedList
ArrayList数组实现
查询快 增删慢
LinkedList链表实现
查询慢 增删块
相关文章推荐
- Java基础 集合框架 共性方法 迭代器 ArrayList LinkedList Vector HashSet TreeSet
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
- java基础解析系列(十)---ArrayList和LinkedList源码及使用分析
- Java基础知识_集合(ArrayList & LinkedList & Vector & 迭代器)
- 集合框架1(Collection的共性方法,迭代器,ArrayList,LinkedList,Vector)
- java基础——ArrayList、LinkedList、Vector
- JAVA之旅(十九)——ListIterator列表迭代器,List的三个子类对象,Vector的枚举,LinkedList,ArrayList和LinkedList的小练习
- Java基础----ArrayList、LinkedList、Vector
- java基础知识:ArrayList和LinkedList的区别
- java ArrayList 和 LinkedList 源码解析比较
- java基础(6)--java中HashSet、LinkedHashSet、TreeSet、ArrayList、ArrayDeque、LinkedList使用区别
- Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- 【幻化万千戏红尘】qianfengDay15-java基础学习:List,ArrayList,LinkedList,comparable,comparator
- java基础(4)--Java中ArrayList和LinkedList区别
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- JAVA之旅(十九)——ListIterator列表迭代器,List的三个子类对象,Vector的枚举,LinkedList,ArrayList和LinkedList的小练习
- Java基础-ArrayList和LinkedList的区别