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 ...
随机推荐
- javascript-初级-day02-this关键字
day01-获取元素的第二种方法 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-T ...
- npm 配置 registry 以及使用 nrm
由于众所周知的原因,我们的内网链接互联网时非常不稳定,速度慢而且经常下载失败.为了提高下载安装 npm 包的体验,很多人都会把 npm 的 registry 配置成国内镜像,我们一般用的比较多的就是淘 ...
- PHP 日期详细介绍
简介 你可以使用这些函数获取运行 PHP 的服务器的日期和时间, 也可以使用这些函数把日期和时间 格式化成不同格式的字符串. 日期和时间信息在 PHP 内部是以 64 位数字存储的, 它可以覆盖当前时 ...
- postman自动调用获取token
Postman不光支持单次请求,还支持环境变量.全局变量.集合变量 本文使用Collection Variable Collection 如下图可以点击Collection然后可以添加请求和文件夹,以 ...
- miRNA分析--靶基因预测(三)
miRNA分析--数据过滤(一) miRNA分析--比对(二) 根据miRNA Target Prediction in Plants, miRNA并非所有区域都要求严格匹配,其中第1位碱基和第14位 ...
- 42-Remove Nth Node From End of List
Remove Nth Node From End of List My Submissions QuestionEditorial Solution Total Accepted: 106592 To ...
- Redis的六种特性 场景
Redis的六种特性 l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis各特性的应用场景 Strings Strings 数据 ...
- 用C语言的LED实验,有汇编哦!
C语言LED实验 1.汇编激活CPU 首先要明白对于没有系统开发板(也就是裸机)来说,是没办法直接对C进行识别.所以需要一段汇编语言,来配置CPU的资源,选择CPU运行模式,初始化指针位置. 代码如下 ...
- python-3.x- 序列操作
1. list操作 A.添加元素 1 list = ["C++","C", "Java", "Python"] 2 &q ...
- 学习java的第十一天
一.今日收获 1.学习java完全学习手册2.9.3循环结构的内容并验证例题 2.观看哔哩哔哩上的教学视频 二.今日问题 1.基本没有 三.明日目标 1.继续完成2.9.3循环结构的例题 2.哔哩哔哩 ...
