02 深入了解java集合之List
程序员文章站
2022-04-15 14:10:04
...
List
此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
一 功能:增加、删除、获取、修改、迭代器
package it.Collection;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
/*List集合不可重复
* 特有功能:
* 增加: void add(int index,E element)
* 删除 : E remove(int index)
* 获取: E get(int index)
* 修改: E set(int index,E element)
* 迭代器: ListIterator listIterator()
*/
public class ListDamo1 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
//添加
list.add(0, "诸葛亮");
list.add(1, "司马懿");
list.add(2, "周瑜");
list.add(3, "曹操");
list.add(4, "刘备");
list.add(5, "孙权");
list.add(4, "刘备1"); //在索引前添加元素
// System.out.println(list);
//删除
// System.out.println(list.remove(4));//返回那个被删除的元素
//获取
System.out.println(list.get(5));//获取指定索引的元素
//修改
System.out.println(list.set(0,"猪")); //返回set前对应索引的数据
System.out.println(list);
//迭代器
ListIterator<String> i = list.listIterator();
//正迭代
while(i.hasNext()){
String s= i.next();
System.out.println(s);
}
System.out.println("-------------------------");
//反迭代
while(i.hasPrevious()){
String s = i.previous();
System.out.println(s);
}
}
}
二 练习题:判断集合里面是否有"曹操"这个元素,如果有则添加"孙悟空", 请写如下代码:
package it.Collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
/*例题 :判断集合里面是否有"曹操"这个元素,如果有则添加"孙悟空", 请写如下代码:
* 迭代器: ListIterator listIterator()//添加功能
*/
public class ListDamoTest02 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
// 添加
list.add(0, "诸葛亮");
list.add(1, "司马懿");
list.add(2, "周瑜");
list.add(3, "曹操");
list.add(4, "刘备");
list.add(5, "孙权");
// 迭代器
ListIterator<String> i = list.listIterator();
/*
* 由于迭代器是依赖于集合存在的,当集合发生改变后,迭代器再迭代就会发生并发修改异常。 解决方案: A:迭代器循环,迭代器修改。
* 在要迭代的后面添加元素。
*/
while (i.hasNext()) {
String s = i.next();
if ("曹操".equals(s)) {
i.add("孙悟空");
}
System.out.println(s);
}
System.out.println(list);
System.out.println("-------------------------");
// B:集合循环,集合修改。元素添加在最后面
for (int a = 0; a < list.size(); a++) {
if ("曹操".equals(a)) {
list.add("孙悟空");
}
}
System.out.println(list);
}
}
三 什么叫数据结构?
就是数据的存储方式
四 常见的数据结构(栈、队列、数组、链表)
A 栈 :先进后出
B 队列:先进先出
C 数组
D 链表
五 List的子类特点(面试题)
ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
上一篇: 序列----list列表
推荐阅读
-
Java语法基础之集合-Set+集合-List
-
深入了解 Java 之虚拟机内存
-
Java基础知识回顾之四 ----- 集合List、Map和Set
-
荐 Java语言基础之Collection接口、List集合、Set集合的基本使用
-
java集合 ArrayDeque原理, 通过源码学习进行深入了解
-
【java读书笔记】——Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
-
java集合 PriorityQueue原理, 通过源码学习进行深入了解
-
Java之List集合三种排序方式
-
深入了解Java I/O 之File类
-
Java集合框架之List ArrayList LinkedList使用详解刨析