您当前的位置: 首页 >  Java

小新爱学习.

暂无认证

  • 3浏览

    0关注

    89博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【精通Java】集合类体系之List集合

小新爱学习. 发布时间:2022-07-01 19:20:51 ,浏览量:3

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

个人名片:

🐼作者简介:一名大一在校生 🐻‍❄️个人主页:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:零基础学java ----- 重识c语言 🐓每日一句:不要羡慕任何人,想要的自己去争取。

文章目录
  • 2. list🦖
    • 2.1 List 集合概述和特点🐶
    • 2.2 List集合特有方法🦜
    • 2.3 并发修改异常🐢
    • 2.4 ListIterator🐣

2. list🦖 2.1 List 集合概述和特点🐶

List 集合概述:

  • 有序集合(也称为序列),用户可以精确控制列表中的每一个元素插入位置,用户可以通过整数索引访问元素,并搜素列表中的元素
  • 与Set集合不同,列表通常允许重复元素

List集合特点:

  • 有序:存储和取出元素熟顺序一致‘’ -可重复:存储元素可以重复

在这里插入图片描述

public class List extends Component implements ItemSelectable, Accessible

List 组件为用户提供了一个可滚动的文本项列表。可设置此 list,使其允许用户进行单项或多项选择。 例如以下代码:

 List lst = new List(4, false);
 lst.add("Mercury");
 lst.add("Venus");
 lst.add("Earth");
 lst.add("JavaSoft");
 lst.add("Mars");
 lst.add("Jupiter");
 lst.add("Saturn");
 lst.add("Uranus");
 lst.add("Neptune");
 lst.add("Pluto");
 cnt.add(lst);

当 cnt 为容器时,将生成以下滚动列表: 显示一个包含这些项的列表:Venus、Earth、JavaSoft 和 Mars。Javasoft 为选中状态。

如果 List 允许进行多项选择,则单击已选中的项时,将取消选中该项。在上面的示例中,一次只能从滚动列表中选择一项,因为创建新的滚动列表时,第二个参数为 false。如果 List 不允许进行多项选择,则选择某一项会导致其他选中的项取消选中。

注意,本示例中显示的列表是用四个可视行创建的。创建该列表之后,不可更改可视行的数量。默认的 List 是用四行创建的,所以 lst = new List() 与 list = new List(4, false) 等效。

代码示例:


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*

List集合特点:

 - 有序:存储和取出元素熟顺序一致‘’
 -可重复:存储元素可以重复

 */
public class ListDemo01 {
    public static void main(String[] args) {
        ///创建集合对象
        List l = new ArrayList();
        l.add("hmm");
        l.add("20");
        l.add("20");
        l.add("der");


        //list集合继承collection,采用迭代器方法遍历集合
        Iterator it = l.iterator();//集合对象调方法l.iterator,alt +enter得到迭代器对象
        while(it.hasNext()) {//判断集合是否有元素
            String s = it.next();//获取元素
            System.out.println(s);


        }
       // System.out.println(l);
    }
}

2.2 List集合特有方法🦜 方法名说明void add(int index,E element)在集合中指定位置插入指定元素E remove(int index)删除指定索引处的元素,返回被删除的元素E set(int index,E element)修改指定索引处元素,返回被修改的元素E get(int index)返回指定索引处的元素

import java.util.ArrayList;
import java.util.List;

//void add(int index,E element)|在集合中指定位置插入指定元素
//E remove(int index)|删除指定索引处的元素,返回被删除的元素
//E set(int index,E element)|修改指定索引处元素,返回被修改的元素
//E get(int index)|返回指定索引处的元素
public class ListDemo02 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("hello");
        list.add("world");
        list.add("java");

        //void add(int index,E element)|在集合中指定位置插入指定元素
        //list.add(0,"hmm");
       // list.add(5,"hm");IndexOutOfBoundsException: Index: 5, Size: 4

        //E remove(int index)|删除指定索引处的元素,返回被删除的元素
        //list.remove(2);

        //E set(int index,E element)|修改指定索引处元素,返回被修改的元素
        //list.set(2,"python");

        E get(int index)|返回指定索引处的元素
        //System.out.println(list.get(1));
        //输出集合
        System.out.println(list);
    }
}

2.3 并发修改异常🐢

并发修改异常

  • ConcurrentModificationException

产生原因

  • 迭代器遍历过程中,通过集合对象中元素的长度,造成了迭代器获取元素中判断预期修改值与实际值不一致

解决方案

  • 用for循环遍历,然后集合对象做对应的操作即可

总结: 不是不能修改,是迭代过程不能增加或者减少元素个数,set还是可以的 List集合是一个单独的参数,lterator迭代器也是一个单独的参数 lterator迭代器是依赖集合存在的,lterator迭代器参数具体内容是通过list方法获取的 也就跟复制粘贴一样,你原来的内容都通过add增加了内容 所以它实际是判断你生成迭代器后,原来的List集合的内容有被修改过没,不然就需要重新生成一次迭代器

2.4 ListIterator🐣

ListIterator:列表迭代器

  • 通过List集合的ListIterator()方法得到,所以说它是list集合特有迭代器

系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置,如下面的插入符举例说明: Element(0) Element(1) Element(2) … Element(n-1) cursor positions: ^ ^ ^ ^ ^


import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/*
 - 通过List集合的ListIterator()方法得到,所以说它是list集合特有迭代器

>==系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。
 */
public class ListIteratorDemo {
    public static void main(String[] args) {
        //创建集合对象
        List l = new ArrayList();

        //添加元素
        l.add("hello");
        l.add("world");
        l.add("java");

    /*    //通过List集合的ListIterator()方法得到,所以说它是list集合特有迭代器
        ListIterator li = l.listIterator();
        while(li.hasNext()) {
            String s = li.next();
            System.out.println(s);
        }

        System.out.println("-----------------------");
        // boolean hasPrevious()
        //          如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
        //ListIterator lt1 = l.listIterator();
        while(li.hasPrevious()) {
            String s1 = li.previous();
            System.out.println(s1);
        }*/

        //获取列表迭代器
        ListIterator li = l.listIterator();
        while(li.hasNext()) {
            String s = li.next();
            if(s.equals("world")){
                li.add("javaee");
            }

        }
        System.out.println(l);

    }
}

在这里插入图片描述

关注
打赏
1663374351
查看更多评论
立即登录/注册

微信扫码登录

0.0507s