A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoyaliulangji 初级黑马   /  2018-4-7 22:10  /  904 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.2.3        Collection集合的遍历

Iterator:
                E next():返回迭代的下一个元素。
                boolean hasNext():如果仍有元素可以迭代,则返回 true。

while(it.hasNext()){
                        //System.out.println(it.next());
                        String s = it.next();
                        System.out.println(s);
第2章        List集合
List:有序的 collection(也称为序列)

List集合的特点:
                A:有序(存储和取出元素的顺序一致)
                B:存储的元素可以重复


2.2        List集合的特有成员方法
void add(int index,E element):在指定位置添加元素
E remove(int index):删除指定位置的元素
E get(int index):获取指定位置的元素
E set(int index,E element):修改指定位置的元素


List集合的遍历:
        A:迭代器
        B:普通for循环
for (int x = 0; x < 3; x++) {
                 System.out.println(list.get(x));
                 }


for(int x=0; x<list.size(); x++) {
                        //System.out.println(list.get(x));
                        String s = list.get(x);
                        System.out.println(s);
                }
ListIterator:
ListIterator<E> listIterator():返回此列表元素的列表迭代器
public interface ListIterator<E>extends Iterator<E>
特有功能:
                E previous():返回列表中的前一个元素。
                boolean hasPrevious():如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
注意:ListIterator可以实现逆向遍历,但是要求先正向遍历,才能逆向遍历。

2.6        并发修改异常产生的原因及解决方案
我有一个集合:List<String> list = new ArrayList<String>();
里面有三个元素list.add("hello");list.add("world");list.add("java");
我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。

ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

产生的原因:
                迭代器依赖于集合而存在,在判断成功后,集合中添加了新的元素,而迭代器并不知道,所有就报错了。
                其实这个问题说的是:迭代器遍历集合中的元素的时候,不要使用集合对象去修改集合中的元素。
如何解决呢?
                A:迭代器遍历的时候,我可以通过迭代器修改集合中的元素
                        元素是跟在刚才迭代的元素后面的
                B:集合遍历的时候,我可以通过集合对象修改集合中的元素
                        元素是在最后添加的



2.7        增强for的概述和使用
增强for:是for循环的一种
格式:
                for(元素的数据类型 变量名 : 数组名或者Collection集合对象名) {
                        使用变量名即可,这个变量名代表的其实就是数组或者Collection集合中的元素
                }
                好处:简化了数组和Collection集合的遍历
                弊端:目标不能为null。如何保证呢?在遍历前先对目标进行不为null的判断。
第3章        数据结构和ArrayList集合的相关案例

3.2.1        List集合子类特点及ArrayList集合存储字符串并遍历
List:
                ArrayList:底层数据结构是数组,查询快,增删慢
                LinkedList:底层数据结构是链表,查询慢,增删快

ArrayList存储字符串并遍历:
                A:迭代器
                B:普通for
                C:增强for

1 个回复

倒序浏览
加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马