【精通Java】集合类体系之List集合_开发语言


个人名片:

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


文章目录

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

2. list🦖

2.1 List 集合概述和特点🐶

List 集合概述:

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

List集合特点:

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

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

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<String> l = new ArrayList<String>();
l.add("hmm");
l.add("20");
l.add("20");
l.add("der");


//list集合继承collection,采用迭代器方法遍历集合
Iterator<String> 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<String> list = new ArrayList<String>();
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<String> l = new ArrayList<String>();

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

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

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

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

}
System.out.println(l);

}
}

【精通Java】集合类体系之List集合_指定位置_03