Java容器学习之List
List接口继承了Collcetion接口,Collection接口又继承了超级接口Iterable,List是有序列表,实现类有ArrayList、LinkedList、Vector、Stack等。
- ArrayList是基于数组实现的,是一个数组队列,可以动态扩容
- LinkedList是基于链表实现的,是一个双向循环列表,可以当做堆栈使用
- Vector是基于数组实现的,是一个矢量队列,是线程安全的
- Stack是基于数组实现的,继承了Vector,是先进后出
现在从List的常用方法做一个梳理。
一、常用方法
1.1 List中添加元素
boolean add(E e) //添加元素, add()方法用于向容器中添加元素,返回值是布尔型
void add(int index, Object obj) //在指定位置添加元素,index是添加元素的位置, index范围是(0,list.size())
boolean addAll(Collection<? extends E> c) //将一个List中的元素全部添加到另一个list的尾部
1 public static void testAdd() {
2 List<Integer> arrayList = new ArrayList<Integer>();
3 arrayList.add(1);
4 arrayList.add(2);
5 arrayList.add(3);
6 for(Integer number : arrayList) {
7 System.out.print(number + " ");
8 }
9 List<Integer> arrayList1 = new ArrayList<>();
10 arrayList1.add(22);
11 arrayList1.add(15);
12 arrayList.addAll(arrayList1);
13 System.out.print("合并后:");
14 for(Integer number : arrayList) {
15 System.out.print(number + " ");
16 }
17 }
1.2 List中删除元素
void clear() //删除List中所有元素
Object remove(int index) //删除指定位置的元素,并把删除元素返回
boolean remove(Object obj) //从集合中删除一个元素,返回布尔值
boolean removeAll(Collection<?> c) //从List删除另一个集合c中的值
boolean retainAll(Collection<?> c) //只保留集合c中的值
void replaceAll(UnaryOperator operator) //根据operator指定的计算规则来重新设置List集合中的所有元素,与Collections中的replaceAll方法有区别
public static void testDelete() {
List<String> pirates = new ArrayList<>();
pirates.add("路飞");
pirates.add("索隆");
pirates.add("娜美");
pirates.add("乌索普");
for (String name : pirates) {
System.out.println("删除前成员有:" + name);
}
pirates.remove("乌索普");
for (String name : pirates) {
System.out.println("删除后成员有:" + name);
}
List<String> retainList = new ArrayList<>();
retainList.add("路飞");
pirates.retainAll(retainList);
for (String name : pirates) {
System.out.println("保留的成员有:" + name);
}
pirates.replaceAll(x -> "草帽海贼团:" + x);
for (String name : pirates) {
System.out.println(name);
}
}
1.3 List中的其它方法
boolean contains(Object obj) //判断是否包含指定元素
boolean contains(Collection c) //判断是否包含另一个集合的元素
boolean isEmpty() //判断是否为空
int size() //返回集合中元素个数
E get(int index) //获取指定位置元素
E set(int index, E element) //对指定位置赋值
int indexof(Object o) //返回指定元素第一次出现的位置索引
List<E> subList(int fromIndex, int toIndex) //返回从fromIndex到toIndex之间的元素
public static void testOtherFunction() {
List<String> pirates = new ArrayList<>();
pirates.add("路飞");
pirates.add("索隆");
pirates.add("娜美");
pirates.add("乌索普");
if (pirates.contains("路飞")) {
System.out.println("包含路飞");
}
System.out.println(pirates.indexOf("娜美"));
System.out.println("pirates长度是:" + pirates.size());
pirates.set(2, "小贼猫娜美");
for (String name : pirates) {
System.out.println("草帽海贼团:" + name);
}
List<String> subPirates = pirates.subList(1, 2);
for (String name : subPirates) {
System.out.println("草帽海贼团001:" + name);
}
}
因为List中方法太多,对其它方法不再进行介绍。
1.4 List的三种遍历方式
public static void testTraverse() {
List<String> pirates = new ArrayList<>();
pirates.add("路飞");
pirates.add("索隆");
pirates.add("娜美");
// for循环遍历
for (int i = 0; i < pirates.size(); i++) {
System.out.println(pirates.get(i));
}
// 增强for循环
for (String str : pirates) {
System.out.println(str);
}
// 迭代器遍历
Iterator iterator = pirates.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
ListIterator listIterator = pirates.listIterator();
while (listIterator.hasNext()) {
System.out.println(listIterator.next());
}
}
前两种遍历方式比较常见,不再介绍,这里主要说一下第三种遍历方式。使用Iterator和ListIterator迭代器都可以对List进行遍历,ListIterator继承于Iterator,并扩充了自己的方法。
下面介绍一下两种迭代器的不同点:
- Iterator可以应用于所有的集合,Set、List和Map和这些集合的子类型。而ListIterator只能用于List及其子类型
- ListIterator有add方法,可以向List中添加对象,而Iterator不能
- ListIterator有hasPrevious()和previous()方法,可以实现双向遍历,而Iterator只能向后遍历
- ListIterator可以定位当前索引的位置,nextIndex()和previousIndex()可以实现,Iterator不能。
Java容器学习之List的更多相关文章
- Java容器学习——List
Java容器学习--List 基础知识 数组: 优点:随机存取,可以快速访问元素 缺点:静态分配内存,存在空间闲置或者溢出现象:不适合进行插入和删除操作,需要移动大量元素. 链表: 优点: ...
- java容器学习
容器是java中重要的一部分,其接口的结构如下 Collection | ------------------ Map | | | Set List HashMap | HashSet 顾名思义,容器 ...
- java—容器学习笔记
一:迭代器 刚开始学容器,做了个简单的练习题.. import java.util.ArrayList; import java.util.Collection; import java.util.I ...
- Java容器学习之ArrayList
一.概述 ArrayList是java中十分常用的集合类,继承于AbstractList,并实现了List.RandomAccess.Cloneable和Serializable接口.ArrayLis ...
- java容器学习笔记
容器 容器的组成 容器有两个接口Map和Collection. collection接口有List类和set类. List类可以分为:Vector.LinkedList.ArrayList.CopyO ...
- 设计模式学习笔记(十六)迭代器模式及其在Java 容器中的应用
迭代器(Iterator)模式,也叫做游标(Cursor)模式.我们知道,在Java 容器中,为了提高容器遍历的方便性,把遍历逻辑从不同类型的集合类中抽取出来,避免向外部暴露集合容器的内部结构. 一. ...
- 【Java心得总结七】Java容器下——Map
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...
- Java Web学习系列——Maven Web项目中集成使用Spring
参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...
- Java容器:Set
Set和数学中的集合十分类似,在Java中,Set是一种绝不会包含两个相等元素的存储结构.在阅读此文前请阅读Java容器:Map. Set方法 增添方法: boolean add(E e); bool ...
随机推荐
- Python 3.10 版本采纳了首个 PEP,中文翻译即将推出
现在距离 Python 3.9.0 的最终版本还有 3 个月,官方公布的时间线是: 3.9.0 beta 4: Monday, 2020-06-29 3.9.0 beta 5: Monday, 202 ...
- 洛谷 P4047 [JSOI2010]部落划分
这道题其实就是无线通讯网的双倍经验啦,只是在输出的时候不同罢了.还是一样的\(kruskal\)算法,但是在求的时候,应该在\(now=n-k+1\)的时候结束.本来到\(n-k\)就行了的,但是由于 ...
- Bootstrap 3.3
https://jeesite.gitee.io/front/bootstrap/3.3/v3.bootcss.com/index.htm
- C++ MFC 操作文件夹及属性(新建,删除[包含子文件[夹]],剪切,复制,重命名)
源文件:http://pan.baidu.com/s/169HCL 运行mfc缺失的动态连接库:http://pan.baidu.com/s/17pGlT 截图: 不足之处仅供参考,哈哈.
- gitlab-ci部署实现持续集成(centos7)
一.gitlab安装 1. 环境准备 // selinux和 firewall 关闭 $ setenforce 0 $ sed -i "/^SELINUX/s/enforcing/disab ...
- day54 js基础
目录 一.变量 二.数据类型 1 数值类型(number) 2 字符类型(string) 3 字符类型常用方法 4 布尔值(boolean) 5 null与undefined 6 对象 7 运算符 8 ...
- 方正璞华Java面试总结(武汉)
方正璞华Java面试总结(武汉) 现在社会急缺复合型人才,计算机与日语的结合,具备这两种能力的人不愁工作,最后他们大多到的也是日企,甚至到日本去工作.至今为止接触的日企有光庭.方正璞华.先锋·商泰.英 ...
- 数据分析02 /pandas基础
数据分析02 /pandas基础 目录 数据分析02 /pandas基础 1. pandas简介 2. Series 3. DataFrame 4. 总结: 1. pandas简介 numpy能够帮助 ...
- Thymeleaf模板引擎学习
开发传统Java WEB项目时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用JSP页面进行页面渲染了.从而Thymeleaf提供了一个用于整合Spring MVC的可选模 ...
- Quartz.Net系列(十六):Misfire策略在SimpleScheduler和CronScheduler中的使用
1.场景 ①因为工作线程都在忙碌,所以导致某些Trigger得不到触发 也就是默认10个工作线程而我有15个Trigger同时触发 这就导致有5个不能被触发,而不幸的是Trigger所关联的Job执行 ...