List集合详解
List集合是有序的,可重复的元素。里面每个元素都有索引,通过索引访问元素。
List接口是Colletion的子接口,自然可以用里面的方法。额外的增加了通过索引访问集合元素的方法。如下
package Test01; import java.util.ArrayList;
import java.util.List; public class TestList {
public static void main(String[] args) {
List l =new ArrayList();
List m =new ArrayList();
m.add(new String("新的集合元素"));
l.add(new String("eee"));
l.add(new String("qqq"));
System.out.println("第一次"+l);
l.add(1, new String("啦啦啦")); //在指定索引处添加元素
l.add(2, new String("啦啦啦"));
System.out.println("第二次"+l);
for(int i=0;i<l.size();i++) {
System.out.println("每个元素分别为"+l.get(i));
}
l.remove(0); //删除指定Index
l.subList(0, 1);
l.addAll(m);
System.out.println(l);
System.out.println(l.indexOf(new String("啦啦啦")));
System.out.println(l.lastIndexOf(new String("啦啦啦")));
}
}
上面的常见的
还有void sort(Comparator comparator); 将Comparator规则给List排序
void replaceAll(UnaryOperation operator)重新用operator计算规则给List排序
那类比得,List判断集合元素相等的条件是什么呢?equals返回true
以下例子重写了equals,看看得出什么结论
package Test01; import java.util.ArrayList;
import java.util.List;
class A{ @Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return true;
}
}
public class TestList {
public static void main(String[] args) {
List l =new ArrayList();
l.add(new String("eee"));
l.add(new String("qqq"));
System.out.println("删除前"+l);
l.remove(new A());
System.out.println("删除后"+l); }
}
List集合试图删除一个A对象,竟然删除了第一个元素。因为打算删除A时,调用了equals方法,和集合里的其他元素比较,返回true,就删除那个元素。
与Set集合不同只提供了一个Iterator(),List集合还额外提供了listIterator()增加反向迭代。
举例
package Test01; import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
class A{ @Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return true;
}
}
public class TestList{
public static void main(String[] args) {
List l =new ArrayList();
l.add(new String("eee"));
l.add(new String("qqq"));
l.add(new String("哈哈哈"));
ListIterator lm = l.listIterator();
while(lm.hasNext()) {
System.out.println(lm.next());
lm.add("---分隔符----");
}
System.out.println(l);
while (lm.hasPrevious()) {
System.out.println(lm.previous()); }
}
}
List集合详解的更多相关文章
- Java 集合详解
一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...
- Java集合详解8:Java的集合类细节精讲
Java集合详解8:Java集合类细节精讲 今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http:// ...
- Java集合详解6:TreeMap和红黑树
Java集合详解6:TreeMap和红黑树 初识TreeMap 之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增.删.改.查,从存储 ...
- Java集合详解3:Iterator,fail-fast机制与比较器
Java集合详解3:Iterator,fail-fast机制与比较器 今天我们来探索一下LIterator,fail-fast机制与比较器的源码. 具体代码在我的GitHub中可以找到 https:/ ...
- 【转载】Java 集合详解
转载:https://www.cnblogs.com/ysocean/p/6555373.html 一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段 ...
- Java集合详解8:Java集合类细节精讲,细节决定成败
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解7:一文搞清楚HashSet,TreeSet与LinkedHashSet的异同
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解6:这次,从头到尾带你解读Java中的红黑树
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
随机推荐
- css标签名
标签 功能介绍 p 标签选择器 #id id选择器 .class class选择器 * 通用选择器 p,a 多个标签选择器 p a 后代选择器 p>a 子代选择器 p+a 紧挨着p后面的a选择器 ...
- 【UWB】DWM1000 室内定位串口协议说明
UWB室内定位串口协议说明 通过串口发送的测距报告消息有三种: "mr"信息包括标签到锚定原始范围 "mc"标签到锚定范围偏差修正范围 - 用于标签位置 &qu ...
- LazyAdmin打靶笔记
参考视频:https://www.bilibili.com/video/BV16Tc8eCEKZ/?spm_id_from=333.1387.homepage.video_card.click Nma ...
- BotSharp + MCP 三步实现智能体开发
1. 简介 1.1 什么是MCP Model Context Protocol(MCP)模型上下文协议是一种标准化协议,它让大模型能够更容易地和外部的数据.工具连接起来.你可以把MCP想象成一个通用的 ...
- Rocketmq 如何保证消息的可用性/可靠性/不丢失呢 ?
如何保证消息的可用性/可靠性/不丢失呢 ? 消息可能在哪些阶段丢失呢?可能会在这三个阶段发生丢失:生产阶段.存储阶段.消费阶段 生产阶段 在生产阶段,主要通过请求确认机制,来保证消息的可靠传递 1.同 ...
- 有的时候,可能会继承基础样式,利用BasedOn="{StaticResource {x:Type TextBlock}}"
有的时候,可能会继承基础样式,利用BasedOn="{StaticResource {x:Type TextBlock}}" 例如: 1 <Window x:Class=&q ...
- 前端速成之——Script
Script 1-引入js和函数调用 function函数:必然存在一个返回值,绝对不会书写 void,要么返回 undefine,要么返回 return 的数据 function etoak(val ...
- 使用 GitHub Actions 构建 CosyVoice 项目的运行环境镜像并推送到阿里云容器镜像服务和 GitHub Package Registry
使用 GitHub Actions 构建 CosyVoice 项目的运行环境镜像并推送到阿里云容器镜像服务和 GitHub Package Registry 概述 本文介绍了如何使用 GitHub A ...
- 17.1K star!两小时就能训练出专属于自己的个性化小模型,这个开源项目让AI触手可及!
「只需一张消费级显卡,2小时完成26M参数GPT训练!」「从零构建中文大模型的最佳实践指南」「兼容OpenAI API,轻松接入各类AI应用平台」 项目介绍 MiniMind是由开发者Jingyao ...
- 使用IDEA构建SpringBoot应用镜像
目录 前置设置 编写Dockerfile文件 添加运行配置 前置设置 确保IDEA已经设置了服务器Docker的信息.[1] 确保您有可运行的SpringBoot项目 编写Dockerfile文件 D ...