List简介

  • List是有序、可重复的容器。
    有序:List中每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。
    可重复:List允许加入重复的元素。更确切地讲,List通常允许满足 e1.equals(e2) 的元素重复加入容器。
  • 除了Collection接口中的方法,List多了一些跟顺序(索引)有关的方法.
  • List接口常用的实现类有3个:ArrayList、LinkedList和Vector.

初始化List

1 List<String> list = new ArrayList<>();

List接口中定义的方法

  • void add(int index, E element); 在指定位置插入元素,以前元素全部后移一位

    实例:

    一般add()添加元素

    1     list.add("A");
    2 list.add("B");
    3 list.add("D");
    4 list.add("E");

List的add添加

1     list.add(2, "C");
  • E set(int index, E element); 修改指定位置的元素
    实例:

    1     list.set(4,"H");
    2 System.out.println(list);
  • E get(int index); 返回指定位置的元素

    1     System.out.println(“输出元素:”+list.get(1));
  • E remove(int index); 删除指定位置的元素,后面元素全部前移一位
    实例:

    1      list.remove(2);
    2 System.out.println(list);
  • int indexOf(Object o);返回第一个匹配元素的索引,如果没有该元素,返回-1
    实战:

    1     // 从头到尾找到第一个"H"
    2 System.out.println(list.indexOf("H"));
  • int lastIndexOf(Object o);返回最后一个匹配元素的索引,如果没有该元素,返回-1
    实战:

    1     // 从尾到头找到第一个"H"
    2 System.out.println(list.lastIndexOf("H"));

List并集和交集处理

  • 创建实例的集合

    1     List<String> list1 = new ArrayList<String>();
    2 list1.add("张三");
    3 list1.add("李四");
    4 list1.add("王五");
    5
    6 List<String> list2 = new ArrayList<String>();
    7 list2.add("张三");
    8 list2.add("赵大");
    9 list2.add("钱二");
  • containsAll() 包含
    实例:

    1     //list1是否包含list2中所有元素
    2 System.out.println(list1.containsAll(list2));
  • addAll() 合并两个集合
    实例:

    1     //将list2中所有元素都添加到list1中
    2 list1.addAll(list2);
  • removeAll() 一个集合中去除另一个集合的内容
    实例:

    1     //从list1中删除同时在list和list2中存在的元素
    2 list1.removeAll(list2);
  • retainAll() 两个集合取交集
    实例:

    1    //取list1和list2的交集
    2 list1.retainAll(list2);

List常用方法

  • 创建实例的集合

    1     List<String> list = new ArrayList<>();
  • boolean isEmpty(); 容器是否为空

实例:

1      System.out.println(list.isEmpty());
  • boolean add(E e); 增加元素到容器中

实例:

1     list.add("张三");
2 list.add("李四");
3 System.out.println(list);
  • int size(); 容器中元素的数量

实例:

1     System.out.println("list的数量大小:" + list.size());
  • boolean contains(Object o); 容器中是否包含该元素

实例:

1     System.out.println("是否包含指定元素:" + list.contains("张三"));
  • boolean remove(Object o); 从容器中移除元素

实例:

1      list.remove("李四");
2 System.out.println(list);
  • Object[] toArray();转化成Object数组

实例:

1     Object[] objects = list.toArray();
2
3 System.out.println("转化成Object数组:" + Arrays.toString(objects));
  • void clear();清楚容器中所有元素

实例:

1     list.clear();
2
3 System.out.println("清空所有元素:" + list);

JDK源码阅读-------自学笔记(二十)(java.util.List初探)的更多相关文章

  1. JDK源码阅读-------自学笔记(二十五)(java.util.Vector 自定义讲解)

    Vector 向量 Vector简述 1).Vector底层是用数组实现的List 2).虽然线程安全,但是效率低,所以并不是安全就是好的 3).底层大量方法添加synchronized同步标记,sy ...

  2. JDK源码阅读-------自学笔记(二十四)(java.util.LinkedList 再探 自定义讲解)

    一.实现get方法 1.一般思维实现思路 1).将对象的值放入一个中间变量中. 2).遍历索引值,将中间量的下一个元素赋值给中间量. 3).返回中间量中的元素值. 4).示意图 get(2),传入角标 ...

  3. JDK源码阅读-------自学笔记(一)(java.lang.Object重写toString源码)

    一.前景提要 Object类中定义有public String toString()方法,其返回值是 String 类型. 二.默认返回组成 类名+@+16进制的hashcode,当使用打印方法打印的 ...

  4. JDK源码阅读-------自学笔记(五)(浅析数组)

    一.数组基础 1.定义和特点 数组也可以看做是对象,数组变量属于引用类型,数组中每个元素相当于该队形的成员变量,数组对象存储在堆中. 2.初始化数组 常用类初始化 // 整型初始化 int[] int ...

  5. 利用IDEA搭建JDK源码阅读环境

    利用IDEA搭建JDK源码阅读环境 首先新建一个java基础项目 基础目录 source 源码 test 测试源码和入口 准备JDK源码 下图框起来的路径就是jdk的储存位置 打开jdk目录,找到sr ...

  6. JDK源码阅读-ByteBuffer

    本文转载自JDK源码阅读-ByteBuffer 导语 Buffer是Java NIO中对于缓冲区的封装.在Java BIO中,所有的读写API,都是直接使用byte数组作为缓冲区的,简单直接.但是在J ...

  7. JDK源码阅读(三):ArraryList源码解析

    今天来看一下ArrayList的源码 目录 介绍 继承结构 属性 构造方法 add方法 remove方法 修改方法 获取元素 size()方法 isEmpty方法 clear方法 循环数组 1.介绍 ...

  8. JDK源码阅读(一):Object源码分析

    最近经过某大佬的建议准备阅读一下JDK的源码来提升一下自己 所以开始写JDK源码分析的文章 阅读JDK版本为1.8 目录 Object结构图 构造器 equals 方法 getClass 方法 has ...

  9. JDK源码阅读(1)_简介+ java.io

    1.简介 针对这一个版块,主要做一个java8的源码阅读笔记.会对一些在javaWeb中应用比较广泛的java包进行精读,附上注释.对于容易混淆的知识点给出相应的对比分析. 精读的源码顺序主要如下: ...

  10. ZooKeeper源码阅读——client(二)

    原创技术文章,转载请注明:转自http://newliferen.github.io/ 如何连接ZooKeeper集群   要想了解ZooKeeper客户端实现原理,首先需要关注一下客户端的使用方式, ...

随机推荐

  1. #组合计数,全排列#洛谷 2518 [HAOI2010]计数

    题目 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数. 比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. ...

  2. USACO 4.1

    目录 洛谷 2737 麦香牛块 分析 代码 洛谷 2738 篱笆回路 分析 代码 麦香牛块洛谷传送门,麦香牛块USACO传送门,篱笆回路洛谷传送门,篱笆回路USACO传送门 洛谷 2737 麦香牛块 ...

  3. docker运行javaWeb服务,操作文件异常

    一.问题由来 部署一个测试服务在自己的服务器上面,然后运行其中的一个功能.然后报错,报错信息如下 二.问题分析 自己一开始也很疑惑,怎么会出现这个问题呢,自己明明把对应的文件放在对应的目录下面,并且已 ...

  4. 深入了解 Spring Cloud Config、Spring Cloud Gateway 与断路器模式

    Spring Microservices 是一个框架,它使用 Spring 框架更容易地构建和管理基于微服务的应用程序.微服务是一种架构风格,其中一个大型应用程序被构建为一组小型.独立可部署的服务.每 ...

  5. 模拟spring工作原理

    1.配置文件 Service=service.Impl.ServiceImpl saveDao=dao.daoImpl.saveDaoImpl 2.模拟业务层 --接口 Service package ...

  6. Windows Server 2012 安装WireShark

    一.环境说明 Windows Server 2012 R2 版本64位: 安装wireshark 二.问题描述 安装wireshark提示 The Visual C++ Redistributable ...

  7. redis 简单整理——阻塞问题[二十五]

    前言 简单介绍一下redis的阻塞问题. 正文 Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成 的.当Redis用于高并发场景时,这条线程就变成了它的生命线.如果出现 阻塞,哪怕是 ...

  8. boltdb 介绍

    介绍 BoltDB 是一个用 Go 语言编写的嵌入式键/值数据库.以下是关于 BoltDB 的一些基本介绍: 键/值存储: BoltDB 为应用程序提供了简单的键/值存储接口. 事务: BoltDB ...

  9. 容器基础-- namespace,Cgroup 和 UnionFS

    Namespace 什么是 Namespace ? 这里的 "namespace" 指的是 Linux namespace 技术,它是 Linux 内核实现的一种隔离方案.简而言之 ...

  10. [ML] 机器学习的 7 步流程

    Gathering Data. Preparing that Data. Choosing a Model. Training. Evaluation. Hyperparameter Tuning. ...