java 数据类型:集合接口Collection之List~ArrayList:remove移除;replaceAll改变原有值;sort排序;迭代器listIterator();
什么是List集合:
特点:
- 元素有序可重复的集合。
- 集合中每个元素都有其对应的顺序索引。
- List集合默认按元素的添加顺序设置元素的索引,索引从0开始。
- 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集合中第一次出现的位置
- Object remove(int index): 删除并返回index索引处的元素
- Object set (int index, Object element) : 将index索引处的元素替换为element对象,返回被替换的旧元素。
- List subList(int fromIndex, int toIndex): 返回从fromIndex(包含)到索引toIndex(不包含)处所有集合元素的自己和。
- void replaceAll(UnaryOperator operator):根据operator指定计算规则重新设置List集合中的所有元素(java8+)。
- void sort(Comparator c) : 根据Comparator参数对List集合的元素排序。
remove移除
移除指定下标或相同对象(对象的equal方法判断)的第一个元素;有限精确匹配,传入数字优先判断下标
原理:List在remove的时候,就是调用equals方法来判断两个元素是否相等的,并且是调用remove方法参数的equals:
import java.util.ArrayList; /**
* @ClassName ArrayListRemoveExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/10.
*/
public class ArrayListRemoveExample {
private static class TestObj{
@Override
public boolean equals(Object obj) {
return true;
}
}
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
arrayList.add("赵六");
System.out.println(arrayList);
arrayList.remove(1); //精确匹配原则,数字优先匹配下标
arrayList.remove("王五"); //其次匹配对象
System.out.println(arrayList); //测试移除原理,是调用需要移除对象的equal方法判断是否和已有元素相等
arrayList.remove(new TestObj());
System.out.println(arrayList); //张三被移除
}
}
replaceAll处理数据并改变原有值
import java.util.ArrayList;
import java.util.function.UnaryOperator; /**
* @ClassName ArrayListReplaceAllExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/10.
*/
public class ArrayListReplaceAllExample {
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
//数据处理
arrayList.replaceAll( o -> {
int tmpNum = (int)o;
return tmpNum * tmpNum;
});
System.out.println(arrayList); //[1, 4, 9]
}
}
sort对ArrayList集合内元素重新排序
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.NavigableMap; /**
* @ClassName ArrayListSortExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/10.
*/
public class ArrayListSortExample {
public static void main(String[] args) {
List nums = new ArrayList();
nums.add(3);
nums.add(2);
nums.add(4);
nums.add(1);
System.out.println(nums); //[3, 2, 4, 1]
//自定义排序
nums.sort(new Comparator() {
@Override
public int compare(Object o, Object t1) {
return (int)o - (int)t1;
}
});
System.out.println(nums); //[1, 2, 3, 4]
nums.sort((o1, o2) -> (int)o2 - (int)o1); //lambda方式
System.out.println(nums); //[4, 3, 2, 1]
}
}
List迭代器listIterator():
- boolean hasPrevious() : 返回迭代器关联的结合是否还有上一个元素
- boolean previous(): 返回迭代器的上一个元素
- void add(Object o): 在当前游标所在位置插入一个元素
import java.util.ArrayList;
import java.util.ListIterator; /**
* @ClassName ArrayListListIteratorExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/10.
*/
public class ArrayListListIteratorExample {
public static void main(String[] args) {
ArrayList persons = new ArrayList();
persons.add("张三");
persons.add("李四");
persons.add("王五");
ListIterator listIteratorPersons = persons.listIterator();
listIteratorPersons.add("赵六"); //游标位置0
System.out.println(persons);//[赵六, 张三, 李四, 王五]
while (listIteratorPersons.hasNext()){
System.out.println(listIteratorPersons.next());
}
listIteratorPersons.add("赵六");//游标位置: 对象.length-1
System.out.println(persons); //[赵六, 张三, 李四, 王五, 赵六]
}
}
Arrays.ArrayList: 长度不可变
List persons = Arrays.asList("李一桐", "刘亦菲", "鞠婧祎"); persons.forEach(person -> System.out.println(person));
persons.add("易烊千玺"); //这行代码直接报错
java 数据类型:集合接口Collection之List~ArrayList:remove移除;replaceAll改变原有值;sort排序;迭代器listIterator();的更多相关文章
- java 数据类型:集合接口Collection之常用ArrayList;lambda表达式遍历;iterator遍历;forEachRemaining遍历;增强for遍历;removeIf批量操作集合元素(Predicate);
java.util.Collection接口 Java的集合主要由两个接口派生出来,一个是Collection一个是Map,本章只记录Collection常用集合 集合只能存储引用类型数据,不能存储基 ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- Java 数据类型:集合接口Collection之Set接口HashSet类;LinkedHashSet;TreeSet 类
Collection 之 Set 实现类: HashSet TreeSet 特点: 无序. 元素不可重复. (如果试图添加一个已经有的元素到一个Set集合中,那么会添失败,add()方法返回false ...
- Java:集合,Collection接口框架图
Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...
- java学习——集合框架(Collection,List,Set)
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存储基本数据类型值. ...
- java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析
java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...
- JAVA 常用集合接口List、Set、Map总结
java中频繁使用List.Set.Map接口,将其总结如下 它们的继承与实现关系如下: Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└ ...
- [Java复习] 集合框架 Collection
Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢.链表相反 List, Set, Map的区别? List, ...
- 【Java】集合概述Collection、Map
Java集合分为Collection和Map,Collection又分为List.Set. List中有ArrayList.LinkedList和Vector:Set中又分为HashSet和TreeS ...
随机推荐
- Hardware assisted virtualization and data execution protection must be enabled in the BIOS. See https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization
解决办法:先关闭 Hyper-V ,然后重新开启 Hyper-V 即可! 来自:https://zhuanlan.zhihu.com/p/51939654
- 【Python】批量给图片增加水印工具
背景 最近有一些图片需要增加水印,找了一圈也没看见比较好的工具,又不想用破解的PS,干脆自己做了一个GUI工具,有需要的同学自取 功能 支持水印预览 自定义水印文字内容 支持行楷和微软雅黑两种字体 支 ...
- java Scanner类与String类
Scanner类的使用: 导入Scanner包,new Scanner对象,记得调用System.in参数,调用对应next方法实现键盘录入. import java.util.Arrays; i ...
- 【POJ1845】Sumdiv【算数基本定理 + 逆元】
描述 Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine ...
- Codeforces 446D - DZY Loves Games(高斯消元+期望 DP+矩阵快速幂)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题,%%% 首先考虑所有格子都是陷阱格的情况,那显然就是一个矩阵快速幂,具体来说,设 \(f_{i,j}\) 表示走了 \(i\) 步 ...
- Atcoder Grand Contest 034 F - RNG and XOR(FWT)
Atcoder 题面传送门 & 洛谷题面传送门 tsc 考试前 A 的题了,结果到现在才写这篇题解--为了 2mol 我已经一周没碰键盘了,现在 2mol 结束算是可以短暂的春天 短暂地卷一会 ...
- cookie的生命周期、访问限制、作用域、prefixes
cookie的生命周期 cookie的生命周期可以通过两种方式定义: 会话期cookie是最简单的cookie:浏览器关闭后会被自动删除.会话期cookie不需要指定过期时间(Expires)或者有效 ...
- [转载]ORA-02287: 此处不允许序号
原文地址:ORA-02287: 此处不允许序号作者:nowhill 转载自 http://blog.sina.com.cn/s/blog_6d496bad01011dyv.html 开发人员反映序列不 ...
- c#表格序号列
<asp:BoundField HeaderText="序号" /> OnRowCreated="gridview_RowCreated" prot ...
- 学习java第十九天
一.今日收获 1.java完全学习手册第三章算法的3.2排序,比较了跟c语言排序上的不同 2.观看哔哩哔哩上的教学视频 二.今日问题 1.快速排序法的运行调试多次 2.哔哩哔哩教学视频的一些术语不太理 ...
