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集合详解的更多相关文章

  1. Java 集合详解

    一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...

  2. Java集合详解8:Java的集合类细节精讲

    Java集合详解8:Java集合类细节精讲 今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http:// ...

  3. Java集合详解6:TreeMap和红黑树

    Java集合详解6:TreeMap和红黑树 初识TreeMap 之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增.删.改.查,从存储 ...

  4. Java集合详解3:Iterator,fail-fast机制与比较器

    Java集合详解3:Iterator,fail-fast机制与比较器 今天我们来探索一下LIterator,fail-fast机制与比较器的源码. 具体代码在我的GitHub中可以找到 https:/ ...

  5. 【转载】Java 集合详解

    转载:https://www.cnblogs.com/ysocean/p/6555373.html 一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段 ...

  6. Java集合详解8:Java集合类细节精讲,细节决定成败

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  7. Java集合详解7:一文搞清楚HashSet,TreeSet与LinkedHashSet的异同

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  8. Java集合详解6:这次,从头到尾带你解读Java中的红黑树

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  9. Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  10. Java集合详解3:一文读懂Iterator,fail-fast机制与比较器

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

随机推荐

  1. 【WinForm】WinForm 生成单文件程序

    WinForm 生成单文件程序 零.解决 安装 Costura.Fody 安装好这个库后生成的就是单文件了. .Net 3.5 NuGet控制台 NuGet\Install-Package Costu ...

  2. study python3【3】前人高度总结出来的不仅仅Pathon的语言习方法

    这是前人写的学习python的经验体会.不单单python,all语言都是如此. 转自https://www.cnblogs.com/nokiaguy/p/9557996.html 感谢分享 下面正文 ...

  3. Unity3d中协程的原理,你要的yield return new xxx的真正理解之道

  4. Python科学计算系列5—导数

    1.一元函数的导数 例1:求下列函数的导数 例2:求下列函数的50阶导数 代码如下: from sympy import * x = symbols('x') f1 = diff(tan(x)) f2 ...

  5. PLSQL中&符号处理

    在SQL语句中的字符串中出现了&符号,当执行的时候会被认为是参数需要传递,如update product set brand = 'D&G'; 解决办法是把语句改为:update pr ...

  6. 【ROS】1.2 创建工作空间与功能包

    创建流程 创建文件夹A,A下创建文件夹src:mkdir -p A/src src下:catkin_init_workspace A下:catkin_make src下,创建工作包learning_p ...

  7. 信息资源管理综合题之“LJ集团的知识库和员工离职客户流失问题”

    一.集团是北京的一家规模巨大的房地产投资公司,早在15年前,该公司出现了如下几个问题:每个业务员手上的客户资料,其他人无法得知,从而导致员工离职时会流失大量潜在客户:业务员繁忙的时候,无法满足客户用户 ...

  8. ASP.NET Core MiniAPI中 EndPoint相关

    1.状态码返回之演化之路 1.1最基本的就是用Results或者TypedResults返回带有状态码的响应(可选Json响应体) app.MapGet("/fruit/{id}" ...

  9. B1086 就不告诉你

    描述 做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地围笑着告诉他:"五十三."本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积. ...

  10. 部署可使用GPU的tensorflow库

      本文介绍在Anaconda环境中,配置可以用GPU运行的Python新版tensorflow库的方法.   在上一篇文章部署CPU与GPU通用的tensorflow:Anaconda环境中,我们详 ...