要学习List<E>接口,首先,我知道它还有一个父接口Collection<E>。而Collection<E>又有一个超级接口Iterable<T>。

我们从超级接口Iterable<T>开始看:

// 实现这个接口允许对象成为 "foreach" 语句的目标。
public interface Iterable<T>

  方法只有一个:

  iterator()     // 返回一个在一组 T 类型的元素上进行迭代的迭代器。

然后我们来看Collection<E>:

public interface Collection<E> extends Iterable<E>

  解释:

    1、Collection 层次结构 中的根接口。

    2、Collection 表示一组对象,这些对象也称为 collection 的元素。

    3、Collection 有些允许重复,有些不允许,有些有序,有些无序。

    4、一般操作Collection没有任何的直接实现,都是通过具体的子接口(比如Set,List)来操作它。

  所有API:

add(E element) 确保此 collection 包含指定的元素。 
addAll(Collection<? extends E> c) 将指定 collection 中的所有元素都添加到此 collection 中。
clear() 从collection中移除所有元素。
contains(Object o) 如果collection包含指定的元素,则返回 true。
containsAll(Collection<?> c) 如果collection包含指定 collection 的所有元素,则返回 true。
equals(Object o)  比较指定的对象与此 collection 是否相等。
hashCode()  返回此collection的哈希码值。
isEmpty()  如果此 collection 不包含元素,则返回 true。
remove(Object o)  从此 collection 中移除指定元素的单个实例,如果存在的话。
removeAll(Collection<?> c) 移除此 collection 中那些也包含在指定 collection 中的所有元素。
retainAll(Collection<?> c) 仅保留此 collection 中那些也包含在指定 collection 的元素。
size() 返回此 collection 中的元素数。
toArray() 返回包含此 collection 中所有元素的数组。
toArray(T[] a)  返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
iterator() 返回在此 collection 的元素上进行迭代的迭代器。(继承的方法)

然后看List<E>:

public interface List<E> extends Collection<E>

  解释:

    1、List<E> :有序的collection(也称为序列)。

    2、可以根据元素的整数索引访问元素。

    3、与 set 不同,列表通常允许重复的元素。

    4、List<E> 继承于collection<E>和iterator<T>,但在一些方法(iterator,add,remove,equals,hashCode)上在原方法的基础上多加了一些其他的约定。

    5、List<E> 扩展了一些父接口没有方法。

  所有API:

继承collection的所有方法 把其中的collection改成列表,大致意思和用法不变。变的方法在下面重写。
add(E element) 向列表的尾部添加指定的元素。 
add(int index,E element) 在列表的指定位置插入指定元素。将当前处于该位置的元素(如果有的话)和所有后续元素向右移动(在其索引中加 1)。
addAll(int index,Collection<? extends E> c) 将指定 collection 中的所有元素都插入到列表中的指定位置。                                  
get(int index)  返回列表中指定位置的元素。
indexOf(Object o)   返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。 
lastIndexOf(Object o)  返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。
remove(int index)  移除列表中指定位置的元素。
remove(Object o) 从此列表中移除第一次出现的指定元素(如果存在)。
set(int index, E element) 用指定元素替换列表中指定位置的元素。
subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。 
toArray()   返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。 
toArray(T[] a)  同collection, 且按适当顺序排列。
iterator()  返回按适当顺序在列表的元素上进行迭代的迭代器。 
listIterator()  返回此列表元素的列表迭代器(按适当顺序)。 
listIterator(int index)  返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。 

  对List的一顿操作:

         Map<String, Object> map1 = new HashMap<>();
map1.put("name", "xiaoming");
map1.put("sex", "0");
map1.put("phone", "13566668888");
map1.put("email", "xiaoming@163.com");
map1.put("age", "18");
// List声明
List<String> list1 = new ArrayList<>();
List<Object> list2 = new ArrayList<>();
List<Object> list3 = new ArrayList<>();
// add操作
list1.add("name");
list1.add("email");
list1.add("sex");
list1.add("age");
list1.add("name"); // list1: ["name","email","sex","age","name"];
list2.add(map1); // list2: [{phone=13566668888, name=xiaoming,email=xiaoming@163.com, age=18}]
// addAll操作
list3.addAll(list1); // list3: ["name","email","sex","age","name"];
list1.add(0, "phone"); // list1: ["phone","name","email","sex","age","name"];
list2.addAll(0, list1); // list2: [phone, name, email, sex, age, name, {phone=13566668888, name=xiaoming, email=xiaoming@163.com, age=18}]
// get操作,equals操作
if (list1.get(1).equals(list3.get(0))) { // name==name
// set操作,indexOf操作
list3.set(list1.indexOf("phone"), "phone"); // list1.indexOf("phone")=0;list3: [phone, email, sex, age, name]
// remove操作
list2.remove(1); // list2: [phone, email, sex, age, name, {phone=13566668888, name=xiaoming, email=xiaoming@163.com, age=18}]
list3.remove("sex"); // list3: [phone, email, age, name]
}
// isEmpty操作
if (!list2.isEmpty()) { // list2.isEmpty()=false
// removeAll操作
list2.removeAll(list2); // list2: []
}
// contains操作
if (!list2.contains("name")) { // list2.contains("name")=false
// size操作
int list3Size = list3.size(); // list3Size=4
// lastIndexOf操作
int list1LastIndexOfName = list1.lastIndexOf("name"); // list1LastIndexOfName=5
// subList操作
list2.addAll(list1.subList(list3Size, list1LastIndexOfName)); // list2: [age]
}
// containsAll操作
if (list1.containsAll(list3)) { // list1.containsAll(list3)=true
// toArray()
map1.put("arr", list1.toArray()); // list1.toArray(): [phone, name, email, sex, age, name]
// toArray(T[] a)
// toArray(new Object[0])在功能上和toArray()相同; list1.toArray(new Object[0]): [phone, name, email, sex, age, name]
map1.put("arr2", list1.toArray(new Object[0])); // 搞不懂这个怎么用,想了解的你们自己研究~会了然后回来教我
// retainAll操作
list1.retainAll(list3); // list1: [phone, name, email, age, name]
// clear操作
list3.clear(); // list1: []
// hashCode操作
map1.put("hashCode", list1.hashCode()); // list1.hashCode(): -912778582
}

至于iterator(),我不会,有兴趣的同学们自己研究,研究会了然后回来教我~

参考:

  JDK(1.7.0中文)    API在线文档:  http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

java List 学习的更多相关文章

  1. Java的学习之路

    记事本 EditPlus eclipse Java的学习软件,已经系统性学习Java有一段时间了,接下来我想讲一下我在Java学习用到的软件. 1.第一个软件:记事本 记事本是Java学习中最基础的编 ...

  2. Java多线程学习笔记

    进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...

  3. Java Web 学习路线

    实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...

  4. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  5. 20145213《Java程序设计学习笔记》第六周学习总结

    20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...

  6. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. Java多线程学习(转载)

    Java多线程学习(转载) 时间:2015-03-14 13:53:14      阅读:137413      评论:4      收藏:3      [点我收藏+] 转载 :http://blog ...

  8. java基础学习总结——java环境变量配置

    前言 学习java的第一步就要搭建java的学习环境,首先是要安装JDK,JDK安装好之后,还需要在电脑上配置"JAVA_HOME”."path”."classpath& ...

  9. Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

    本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...

  10. Java Web学习系列——Maven Web项目中集成使用Spring

    参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...

随机推荐

  1. Java 面试题基础概念收集(高级)

    JVM垃圾回收: GC又分为 minor GC 和 Full GC (也称为 Major GC ).Java 堆内存分为新生代和老年代,新生代中又分为1个 Eden 区域 和两个 Survivor 区 ...

  2. python x[:] x[::]用法总结

    python x[:] x[::]用法总结 X[:,0] # 二维数组取第1维所有数据 X[:,1] # 第2列 X[0,:] # 第1行 X[3,:] # 第三行 X[1:4,:] # 第一二三行 ...

  3. 解题报告:hdu1008 Elvator

    2017-09-07 19:30:22 writer:pprp 比较顺利,最近生活出现了各种问题, 发生了很多矛盾,我要耐下心来,最重要的不是努力不努力,而是选择 希望我能处理好人际关系还有学业上的压 ...

  4. [转]3个著名加密算法(MD5、RSA、DES)的解析

    MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来.     ...

  5. mac 下 安装 mongodb

    使用brew安装,不过brew不再更新, 通过 sudo chown -R $(whoami):admin /usr/local 这条语句终端有提醒的 xcode-select --install 需 ...

  6. 明确出需求 然后开会评审 要什么接口 接口参数、返回json内容、格式 协定好 在做

     明确出需求 然后开会评审 要什么接口 接口参数.返回json内容.格式 协定好 在做 

  7. 12 Essential Bootstrap Tools for Web Designers

    12 Essential Bootstrap Tools for Web Designers Posted by vikas on June 6, 2014, filed in: Tools, Web ...

  8. 河南省多校联盟二-F 线段树+矩阵

    ---恢复内容开始--- 1284: SP教数学 时间限制: 2 秒  内存限制: 128 MB提交: 24  解决: 4 题目描述 输入 输出 对于每组数据的2操作,输出一行对1e9 + 7取模的答 ...

  9. 使用curl调试openstack的api

    一 系统环境 OpenStack: Mitaka 工具: 最简单的工具:restclient,本次使用curl 二 开搞 访问openstack的API之前,用户使用用户名和密码向keystone进行 ...

  10. html中引入另一个html文件

    https://segmentfault.com/q/1010000002954318