1. 定义

List是Collection的子接口,元素有序并且可以重复,表示线性表。

2. 常用实现类

ArrayList:它为元素提供了下标,可以看作长度可变的数组,为顺序线性表。

LinkedList:通过代价较低的在List中间进行插入和删除操作,提供了优化的顺序访问,但是在随即访问方面相对比较慢,为链表线性表。

3. 方法

boolean add(E e):在列表末添加元素

void add(int index, E e):在指定索引处添加元素,不会覆盖原先元素

boolean addAll(int index, Collection e):在指定索引处放入集合

Object get(int index):获取指定索引的元素

E set(int index, E element):更新指定索引的元素

int indexOf(Object o):获取指定元素在集合中的索引(第一次出现的元素)

int lastIndexOf(Object o):返回此列表中最后出现的元素的索引

Object remove(int index):删除指定索引对应的元素

boolean remove(Object o):删除列表中出现的第一个指定元素

boolean contains(Object o):判断列表是否包含给定元素

List subList(int fromIndex, int toIndex):返回索引为[form,to)的元素集合

Object[] toArray():将列表转为数组

Iterator<E> iterator():列表遍历的迭代器

boolean isEmpty():判断列表是否为空

void clear():删除列表所有元素

int size():返回列表长度

其他方法及其具体说明:https://docs.oracle.com/javase/8/docs/api/

4.示例

 import java.util.*;

 public class ListFunc {
public static void main(String[] args){
List<String> list1 = new ArrayList<>(); //在列表末尾添加元素
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4"); // 在列表指定索引处添加元素
list1.add(1,"2");
list1.add(5,"5");
list1.add(6,"6");
System.out.println(list1); // [1, 2, 2, 3, 4, 5, 6] //删除指定索引的元素
list1.remove(0);
System.out.println(list1); // [2, 2, 3, 4, 5, 6] //删除指定元素(第一个),要删除的元素可以不在列表中
list1.remove("2");
System.out.println(list1); //[2, 3, 4, 5, 6] //删除指定索引区域的多个元素
// subList = list1.subList(1,3);
// subList.clear(); // 两者等价,更改subList会改变list1
list1.subList(1,3).clear();
System.out.println(list1); //[2, 5, 6] //删除所有元素
// list1.clear();
// System.out.println(list1); //[] // 更改指定索引的元素
list1.set(0,"1");
System.out.println(list1); // [1, 5, 6] //获取指定索引处元素
String a1 = list1.get(0);
System.out.println(a1); // 1 // 获取指定元素的索引,没有该值返回-1
int index = list1.indexOf("1");
System.out.println(index); // 0 //获取指定索引区域的多个元素
List<String> list2 = list1.subList(0,2);
System.out.println(list2); // [1, 5] // 判断列表是否有某元素
boolean flag = list2.contains("5");
System.out.println(flag); // true // list转array
String[] arr2 = list2.toArray(new String[0]);
// String[] arr2 = list2.toArray(new String[list2.size()]); //两者等价
System.out.println(Arrays.toString(arr2)); // [1, 5] // iterator迭代器
Iterator<String> it = list2.iterator();
while (it.hasNext()){
System.out.print(it.next()+" "); // 1 5
} // 增强for循环
for(String str: list2){
System.out.print(str+ " "); // 1 5
}
}
}

!!!

Java容器——List接口的更多相关文章

  1. Java容器Map接口

    Map接口容器存放的是key-value对,由于Map是按key索引的,因此 key 是不可重复的,但 value 允许重复. 下面简单介绍一下Map接口的实现,包括HashMap,LinkedHas ...

  2. Java容器List接口

    List接口是Java中经常用到的接口,如果对具体的List实现类的特性不了解的话,可能会导致程序性能的下降,下面从原理上简单的介绍List的具体实现: 可以看到,List继承了Collection接 ...

  3. Java容器---Collection接口中的共有方法

    1.Collection 接口 (1)Collection的超级接口是Iterable (2)Collection常用的子对象有:Map.List.Set.Queue. 右图中实现黑框的ArrayLi ...

  4. java容器——Collection接口

    Collection是Set,List接口的父类接口,用于存储集合类型的数据. 2.方法 int size():返回集合的长度 void clear():清除集合里的所有元素,将集合长度变为0 Ite ...

  5. Java容器——Set接口

    1.定义 set中不允许放入重复的元素(元素相同时只取一个).它使用equals()方法进行比较,如果返回true,两个对象的HashCode值也应该相等. 2.方法 TreeSet中常用的方法: b ...

  6. Java容器——Map接口

    1.定义 Map用于保存存在映射关系<key, value>的数据.其中key值不能重复(使用equals()方法比较),value值可以重复. 2.常用实现类 HashMap:和Hash ...

  7. Java容器Set接口

    Set接口的实现,可以方便地将指定的类型以集合类型保存在一个变量中.Set是一个不包含重复元素的Collection,更确切地讲,Set 不包含满足 e1.equals(e2) 的元素对,并且最多包含 ...

  8. Java容器深入浅出之Collection与Iterator接口

    Java中用于保存对象的容器,除了数组,就是Collection和Map接口下的容器实现类了,包括用于迭代容器中对象的Iterator接口,构成了Java数据结构主体的集合体系.其中包括: 1. Co ...

  9. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

随机推荐

  1. bzoj1036 [ZJOI2008]树的统计Count 树链剖分模板题

    [ZJOI2008]树的统计Count Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u ...

  2. python format()用法

    转自 https://www.cnblogs.com/gide/p/6955895.html python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快速处理各种字符串 ...

  3. 记录ok6410 jlink 命令行调试uboot

    1\启动ok6410 进入uboot命令行 2\启动JLinkGDBServer -device ARM11 3\arm-none-eabi-gdb u-boot 初始化脚本 # Connect to ...

  4. flask实战-留言板-Web程序开发流程

    Web程序开发流程 在实际的开发中,一个Web程序的开发过程要设计多个角色,比如客户(提出需求).项目经理(决定需求的实现方式).开发者(实现需求)等,在这里我们假设自己是一个人全职开发.一般来说一个 ...

  5. 2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 20165215

    目录 基础问题回答 (1)杀软是如何检测出恶意代码的? (2)免杀是做什么? (3)免杀的基本方法有哪些? 实践内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil ...

  6. [dart学习]第三篇:dart变量介绍 (二)

    本篇继续介绍dart变量类型,可参考前文:第二篇:dart变量介绍 (一) (一)final和const类型 如果你不打算修改一个变量的值,那么就把它定义为final或const类型.其中:final ...

  7. 多线程校验url的种种。。。

    东西不经常看就容易忘,这两天抽空写了一个补丁库url验证工具,挺曲折的,记录一下需求大概流程如下:转换补丁库为xml,解析xml得到所有url,多线程校验url.就不到100行有效代码,断断续续写了三 ...

  8. 20175307《Java程序设计》第5周学习总结

    教材内容总结 6.1  接口 1接口声明 接口使用关键字interface来进行声明 eg:interface  接口的名字 2接口体 接口体中包含常量的声明和抽象方法两部分(没有变量) 注意一定的要 ...

  9. SpringMVC,SpringBoot利用ajax上传文件到后台

    1.传递单文件 首先html文件中有个<input type=”file” name=”file” id=”file”/>元素. 前台js写法: var formData=new Form ...

  10. iOS imageNamed 与 imageWithContentsOfFile 的区别

    imageNamed 方法 1)后面的参数是icon的名字,图片可以存在项目中,也可以存在Asset中 2)该方法只适合一些中小型的图片读取,而一些比较大的资源图片并不适合用这个方法 3)这个方法加载 ...