序章 

 List集合是一个元素有序且可以重复的集合,每个元素对应一个索引,类似于数组的方式,默认是按照添加顺序,所以第一次添加元素索引为0,第二次为1。。。。

一 Java8改进的List接口和ListIterator接口

  List作为Collection接口的子接口,可以使用Collection接口的所有方法,同时由于为有序集合,所以增加了一些根据索引来操作集合元素的方法。

  新增方法如下:

  void add(int index,Object element):将元素element插入到List集合的index处。

  boolean addAll(int index,Collection c):将集合c所包含的所有元素插入到List集合的index处。

Object get(int index):返回集合index索引处的元素。

  int indexOf(Object o):返回对象o在List集合中第一次出现的位置信息。

  int  lastIndexOf(Object o):返回对象o在List集合中最后一次出现的位置索引。

  Object remove(int index):删除并返回index索引处的元素。

  Object set(int index,Object element):将index索引处的元素替换成element对象,返回被替换的旧元素。

  List subList(int fromIndex,int toIndex):返回从索引fromIndex(包含)到toIndex(不包含)处所有集合元素组成的子集合。

    所有List实现类都可以调用这些方法来操作集合元素。相比Set,List增加了根据索引来插入,替换和删除集合元素的方 法。除此之外,Java8还增加了如下两个默认方法

  void replaceAll(UnaryOperator operator):根据operator指定的计算规则重新设置List集合的所有元素。

  void sort(Comparatorc):根据Comparator参数对List集合的元素排序。

  代码示例

package com.j1803.listTest;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ListTest {
public static void main(String[] args) {
List book=new ArrayList();
Set set=new HashSet();
set.add(78);
set.add(new String("DDDD"));
set.add("EEEE");
set.add("BBBB");
book.add(new String("AAAA"));
book.add(new String("BBBB"));
book.add(new String("CCCC"));
//book.add(5,new String("DDDD"));报错java.lang.IndexOutOfBoundsException: Index: 5, Size: 3
book.add(3,new String("DDDD"));
System.out.println(book);
book.addAll(set);
System.out.println(book);
System.out.println(book.get(2));
System.out.println(book.indexOf("CCCC"));
System.out.println(book.indexOf("BBBB"));
System.out.println(book.lastIndexOf("BBBB"));
System.out.println(book.remove("BBBB"));
System.out.println(book);
System.out.println(book.remove(1));
System.out.println(book);
book.set(0, new String("Hello World"));
System.out.println(book);
System.out.println(book.subList(0, 3));
} }
[AAAA, BBBB, CCCC, DDDD]
[AAAA, BBBB, CCCC, DDDD, EEEE, 78, DDDD, BBBB]
CCCC
2
1
7
true
[AAAA, CCCC, DDDD, EEEE, 78, DDDD, BBBB]
CCCC
[AAAA, DDDD, EEEE, 78, DDDD, BBBB]
[Hello World, DDDD, EEEE, 78, DDDD, BBBB]
[Hello World, DDDD, EEEE]

    List通过equals方法来判断两个对象是否相等。如果equals返回为true则相等,否则则不想等。

  代码示例

package com.j1803.listTest;
import java.util.ArrayList;
import java.util.List;
public class ListTest2 {
public static void main(String[] args) {
List list=new ArrayList();
list.add("AA");
list.add("BB");
list.add("CC");
System.out.println(list);
list.remove(new A());
System.out.println(list);
list.remove(new A());
System.out.println(list);
}
}
class A{
public boolean equals(Object obj) {
return true;
}
}
[AA, BB, CC]
[BB, CC]
[CC]

  

  

  

最新文章

  1. 用Kotlin语言重新编写Plaid APP:经验教训(I)
  2. php 如何解决“您访问的域名有误或网页不存在”
  3. java16
  4. Android--多媒体操作
  5. IBM服务器诊断面板
  6. c#检测端口是否被占用
  7. nginx环境下配置nagios-关于commands.cfg
  8. 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器
  9. Apache虚拟主机(vhost)配置教程
  10. MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键
  11. openstack 控制节点大流量对外发包,nf_conntrack,table full droping packets
  12. Oracle EBS-SQL (WIP-15):检查车间任务物料未发数量与现有量对照.sql
  13. Struts+Spring+Hibernate项目整合AJAX+JSON
  14. jupyter notebook 更换主题的方法
  15. linux信号量与完成量
  16. CSS常见的中属性级,选择符级的Hack
  17. [Swift-2019力扣杯春季初赛]2. 校园自行车分配
  18. 软件工程启程篇章:C#和四则运算生成与运算
  19. SqlHelper分享
  20. python-day97--django-ModelForm

热门文章

  1. SystemML大规模机器学习,优化算子融合方案的研究
  2. 如何在CPU上优化GEMM(下)
  3. 深度学习加速器堆栈Deep Learning Accelerator Stack
  4. GPU端到端目标检测YOLOV3全过程(上)
  5. 容斥+dp (一)
  6. pytest命令行参数
  7. 【C++】类
  8. 天天写order by,你知道Mysql底层如何执行吗?
  9. 终于放弃了单调的swagger-ui了,选择了这款神器—knife4j
  10. 技术解密 |阿里云多媒体 AI 团队拿下 CVPR2021 5 冠 1 亚成绩的技术分享