list的API 如下:

下面是我对这段API的翻译

An ordered collection (also known as a sequence).
一个有序的集合(也被称为序列)
The user of this interface has precise control over where in the list each element is inserted.
这个接口的 使用者对list中每个元素的插入位置有着准确的控制。
The user can access elements by their integer index (position in the list), and search for elements in the list.
使用者可以通过索引(Interger类型)来获取元素,查找元素。 Unlike sets, lists typically allow duplicate elements.
和set不同,list允许重复元素。
More formally, lists typically allow pairs of elements e1 and e2 such that e1.equals(e2),
更正式的说法是,list允许e1.equals(e2),
and they typically allow multiple null elements if they allow null elements at all.
同样,list中也允许存在null元素。
It is not inconceivable that someone might wish to implement a list that prohibits duplicates, by throwing runtime exceptions when the user attempts to insert them, but we expect this usage to be rare.
当然,用户可以自定义list,使得这个list不接受null元素(元素是null就抱空指针错误或者做其他处理)。 The List interface places additional stipulations,beyond those specified in the Collection interface, on the contracts of the iterator, add, remove, equals, and hashCode methods.
Declarations for other inherited methods are also included here for convenience.
除了collection接口中明确需要继承的方法(iterator,add,remove,equals,hashcode)之外,list接口还增加了其他的接口,这些接口为list的使用提供了便利。 The List interface provides four methods for positional (indexed) access to list elements.
list接口提供了四个方法来通过索引获取元素。
Lists (like Java arrays) are zero based.
list和java中的数组一样是从零开始。
Note that these operations may execute in time proportional to the index value for some implementations (the LinkedList class, for example).
需要注意的是这些操作执行的时间可能跟index的值成比例(比如LinkedList )
Thus, iterating over the elements in a list is typically preferable to indexing through it if the caller does not know the implementation.
因此,如果调用者不知道实现,则通过迭代列表中的元素通常优先于索引。 The List interface provides a special iterator, called a ListIterator,
list接口提供了一个特殊的迭代器,称为ListIterator.
that allows element insertion and replacement, and bidirectional access in addition to the normal operations that the Iterator interface provides.
这允许元素插入和替换,以及Iterator接口提供的常规操作之外的双向访问。
A method is provided to obtain a list iterator that starts at a specified position in the list.
从一个list中的特定位置开始的Iterator可以通过list中提供的方法获取。 The List interface provides two methods to search for a specified object.
list接口提供两个方法来查找指定的对象。
From a performance standpoint, these methods should be used with caution.
为了性能要求,这些方法必须使用警告。
In many implementations they will perform costly linear searches.
在很多实现中,他们都是非常耗时的线性查找。 The List interface provides two methods to efficiently insert and remove multiple elements at an arbitrary point in the list.
List接口提供了两种方法,可以在列表中的任意点高效地插入和删除多个元素。 Note: While it is permissible for lists to contain themselves as elements, extreme caution is advised: the equals and hashCode methods are no longer well defined on such a list.
注意:尽管列表允许将其自身作为元素,但建议您非常小心:equals和hashCode方法在这样的列表中不再被很好地定义。 Some list implementations have restrictions on the elements that they may contain.
有一些list的实现在它们能够包含的元素上有一些限制。
For example, some implementations prohibit null elements, and some have restrictions on the types of their elements.
比如,有些list不能有null元素,有些list的元素类型被限制。
Attempting to add an ineligible element throws an unchecked exception, typically NullPointerException or ClassCastException.
尝试将不符合要求的元素加入到list中会抛出异常,通常是空指针异常 或者 ClassCastException。
Attempting to query the presence of an ineligible element may throw an exception, or it may simply return false;
尝试查询一个不符合要求的元素
some implementations will exhibit the former behavior and some will exhibit the latter.
有些实现会禁止之前的行为,有些则会禁止某些字母。
More generally, attempting an operation on an ineligible element whose completion would not result in the insertion of an ineligible element into the list may throw an exception or it may succeed, at the option of the implementation.
通常,尝试操作不符合要求的元素将不会导致不符合要求的元素插入到队列中,而是导致异常,当然也有可能成功,这取决于具体的实现。
Such exceptions are marked as "optional" in the specification for this interface.
在这个接口规范中这些异常被标注为可选择的。 This interface is a member of the Java Collections Framework.
这个接口是java集合框架中的一员。

总结一下,主要说了以下几点:
1、list是一个有序的集合(也是被称为序列),和set不一样,list中允许重复元素的存在。

2、list的使用者对元素的插入位置(索引)有着准确的控制,通过索引可以获取元素。

3、list提供了各种方法来方便我们对其中的元素操作

4、list是java集合框架的一员

说得太笼统,具体还是需要看API。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

接口中定义的方法

    //返回list中的元素个数
int size(); //判断list中是否包含元素,如果不包含返回true
boolean isEmpty(); //判断list中是否包含某个特定的对象
boolean contains(Object o); //以正确的顺序返回list中元素的迭代器
Iterator<E> iterator(); //返回一个包含list中所有元素的数组,数组中元素的顺序和list中的顺序一样
//这个方法可以当做array-based 和 collection-based API之间的桥梁
Object[] toArray(); //返回一个包含list中所有元素的数组,数组中元素的顺序和list中的顺序一样
//array数组的类型是确定的。如果指定的array大小不足,这个方法将会生成一个新的数组用于返回
//新数组的类型和运行时的数组类型一样
<T> T[] toArray(T[] a); //在list的末尾插入元素(实现类可以选择插入的位置)
boolean add(E e); //如果指定元素存在list中,移除list中第一次出现的指定元素(实现类可以选择具体的实现)
boolean remove(Object o); //判断list中是否包含某个集合
boolean containsAll(Collection<?> c); //将指定集合中的所有元素加到list的末尾
boolean addAll(Collection<? extends E> c); //在指定位置插入指定集合
boolean addAll(int index, Collection<? extends E> c); //删除list中包含的Collection中的所有元素
boolean removeAll(Collection<?> c); //保留list中包含的Collection中的所有元素
boolean retainAll(Collection<?> c); //将该列表的每个元素替换为将该运算符应用于该元素的结果。
default void replaceAll(UnaryOperator<E> operator); //对list中的元素排列
default void sort(Comparator<? super E> c); //删除list中的所有元素
void clear(); boolean equals(Object o); int hashCode(); //根据索引获取list中的元素
E get(int index); //用指定元素替换指定位置上的元素
E set(int index, E element); //在指定位置上增加指定元素
void add(int index, E element); //删除指定索引上的元素
E remove(int index); //获取对象的第一个索引
int indexOf(Object o); //获取对象的最后一个索引
int lastIndexOf(Object o); //返回list的list 迭代器
ListIterator<E> listIterator(); //从指定位置返回list的迭代器
ListIterator<E> listIterator(int index); //返回list的子list
List<E> subList(int fromIndex, int toIndex); //Creates a {@link Spliterator} over the elements in this list.
default Spliterator<E> spliterator()

java.util.List API解读的更多相关文章

  1. Java Concurrency - java.util.concurrent API Class Diagram

    摘自: www.uml-diagrams.org Here we provide several UML class diagrams for the Java™ 7 java.util.concur ...

  2. Java.util.properties读取配置文件分析

    Java.util.properties API链接: https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html Clas ...

  3. 深入分析Java的内置日志API(java.util.logging)(一)

    简介   任何的软件系统,日志都是非常重要的一部分.良好统一的日志规范会大大提高应用程序的可维护性.可靠性,并进而提高开发效率,指导业务.在早期,Java工程师往往都是利用 System.err.pr ...

  4. Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.Exec

    Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.build.api.tr ...

  5. 【spring mvc】后台API查询接口,get请求,后台Date字段接收前台String类型的时间,报错default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'createDate';

    后台API查询接口,get请求,后台Date字段接收前台String类型的时间筛选条件 后台接口接收 使用的实体 而createDate字段在后台实体中是Date类型 报错信息: org.spring ...

  6. Java8 流式 API(`java.util.stream`)

    熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C♯ 中,有 LINQ 来实现.那 ...

  7. java.util.Date和jdk1.8新时间API比拼

    旧的时间和日期的API的缺陷 Java 的 java.util.Date 和 java.util.Calendar 类易用性差,不支持时区,而且都不是线程安全的. Date如果不格式化,打印出的日期可 ...

  8. java.util.concurrent包API学习笔记

    newFixedThreadPool 创建一个固定大小的线程池. shutdown():用于关闭启动线程,如果不调用该语句,jvm不会关闭. awaitTermination():用于等待子线程结束, ...

  9. java.io.BufferedWriter API 以及源码解读

    下面是java se 7 API 对于java.io.BufferedWriter 继承关系的描述. BufferedWriter可以将文本写入字符流.它会将字符缓存,目的是提高写入字符的效率. bu ...

随机推荐

  1. Pod 找不到头文件 解决方法

    在 BuildSetting 中 搜索 User Header Search Paths 然后在下面 User Header Search Paths 中添加 ${SRCROOT}  再将后面参数改为 ...

  2. hdu4738 求割边

    细节题:1.如果图不连通,则输出0 2.如果图没有桥,本身是双联通图,则输出-1 3.如果最小的桥权值为0,任然要输出1 #include<bits/stdc++.h> using nam ...

  3. AI学习吧-购物车-添加商品接口

    create接口流程 需求:向购物车添加商品 流程:写shopping_cart路由--->写ShoppingCart视图函数--->使用Authuser校验用户是否登录--->首先 ...

  4. 重建控制文件报错 ORA-01503 ORA-01192

    1. 错误信息 ORA-: CREATE CONTROLFILE failed ORA-: must have at least one enabled thread 2. 重建脚本 CREATE C ...

  5. Python_网络编程udp-飞秋自动攻击

    # 模拟一个接收数据import socketimport time def auto_hack(udp_socket, recv_msg, revc_ip, revc_port=2425): # 发 ...

  6. 目标检测算法之R-CNN算法详解

    R-CNN全称为Region-CNN,它可以说是第一个成功地将深度学习应用到目标检测上的算法.后面提到的Fast R-CNN.Faster R-CNN全部都是建立在R-CNN的基础上的. 传统目标检测 ...

  7. Html列表分页算法

    public class PageHelper { /// <summary> /// 标签 /// </summary> public string Tag { get; s ...

  8. WebApi参数传递实例

    Get 1.基础数据类型 1.1方法只含有一个形参 (1)Get传值的本质是通过url字符串拼接(2)Get传递参数本质是url字符串拼接,Request-Head头部传递,Request-Body中 ...

  9. WebClient 支持 gzip, deflate

    低调偷偷的下别人数据 发现下出来乱码- 用F12看看请求,原来人家是用了gzip压缩的- 试着自己加个Heading wc.Headers.Add("Accept-Encoding" ...

  10. [转]Spring Boot修改最大上传文件限制:The field file exceeds its maximum permitted size of 1048576 bytes.

    来源:http://blog.csdn.net/awmw74520/article/details/70230591 SpringBoot做文件上传时出现了The field file exceeds ...