简介

特点: 有序, 有下标, 元素可以重复

常用方法

boolean add(E e) 将指定的元素追加到此列表的末尾(可选操作)。
void add(int index, E element) 将指定的元素插入此列表中的指定位置(可选操作)。
boolean addAll(Collection<? extends E> c) 按指定集合的迭代器(可选操作)返回的顺序将指定集合中的所有元素附加到此列表的末尾。
boolean addAll(int index, Collection<? extends E> c) 将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。
void clear() 从此列表中删除所有元素(可选操作)。
boolean contains(Object o) 如果此列表包含指定的元素,则返回 true
boolean containsAll(Collection<?> c) 如果此列表包含指定 集合的所有元素,则返回true。
boolean equals(Object o) 将指定的对象与此列表进行比较以获得相等性。
E get(int index) 返回此列表中指定位置的元素。
int hashCode() 返回此列表的哈希码值。
int indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
boolean isEmpty() 如果此列表不包含元素,则返回 true
Iterator<E> iterator() 以正确的顺序返回该列表中的元素的迭代器。
int lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
ListIterator<E> listIterator() 返回列表中的列表迭代器(按适当的顺序)。
ListIterator<E> listIterator(int index) 从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。
E remove(int index) 删除该列表中指定位置的元素(可选操作)。
boolean remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)(可选操作)。
boolean removeAll(Collection<?> c) 从此列表中删除包含在指定集合中的所有元素(可选操作)。
default void replaceAll(UnaryOperator<E> operator) 将该列表的每个元素替换为将该运算符应用于该元素的结果。
boolean retainAll(Collection<?> c) 仅保留此列表中包含在指定集合中的元素(可选操作)。
E set(int index, E element) 用指定的元素(可选操作)替换此列表中指定位置的元素。
int size() 返回此列表中的元素数。
default void sort(Comparator<? super E> c) 使用随附的 Comparator排序此列表来比较元素。
default Spliterator<E> spliterator() 在此列表中的元素上创建一个Spliterator
List<E> subList(int fromIndex, int toIndex) 返回此列表中指定的 fromIndex (含)和 toIndex之间的视图。
Object[] toArray() 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。
<T> T[] toArray(T[] a) 以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 返回的数组的运行时类型是指定数组的运行时类型。

ListItertor 的一些方法

Modifier and Type Method and Description
void add(E e) 将指定的元素插入列表(可选操作)。
boolean hasNext() 返回 true如果遍历正向列表,列表迭代器有多个元素。
boolean hasPrevious() 返回 true如果遍历反向列表,列表迭代器有多个元素。
E next() 返回列表中的下一个元素,并且前进光标位置。
int nextIndex() 返回随后调用 next()返回的元素的索引。
E previous() 返回列表中的上一个元素,并向后移动光标位置。
int previousIndex() 返回由后续调用 previous()返回的元素的索引。
void remove() 从列表中删除由 next()previous()返回的最后一个元素(可选操作)。
void set(E e)指定的元素替换由 next()previous()返回的最后一个元素(可选操作)。

方法演示

引用类型的 List

package 集合;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator; public class ListDemo {
public static void main(String[] args) {
List list = new ArrayList();
//增加
list.add("苹果");
list.add("小米");
list.add("华为");
list.add(1, "三星");
System.out.println(list);
//包含
System.out.println(list.contains("华为"));
System.out.println(list.contains("vivo"));
//获取指定元素和元素位置
System.out.println(list.get(1));
System.out.println(list.indexOf("华为"));
System.out.println(list.indexOf("vivo")); //若此元素不存在则返回-1
System.out.println(list.isEmpty());
//for遍历
System.out.println("-------for循环遍历--------");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//增强for
System.out.println("-----增强for-------");
for (Object object : list) {
System.out.println(object);
}
//普通迭代器
System.out.println("-------Itertor迭代---------");
Iterator its = list.iterator();
while(its.hasNext()) {
System.out.println(its.next());
}
//列表迭代器
System.out.println("------ListItertor顺序迭代");
ListIterator Lit = list.listIterator();
while(Lit.hasNext()) {
System.out.println(Lit.nextIndex() + ":" + Lit.next());
}
Lit.set("Vivo");
//注:ListItertor有指针,随next()或者previous而变化,因此若想要逆序遍历需首先顺序遍历
System.out.println("-------LIstItertor倒序遍历----------");
while(Lit.hasPrevious()) {
System.out.println(Lit.previousIndex() + ":" + Lit.previous());
}
//子集合的创建
List li = list.subList(1, 3);
System.out.println(li);
//删除元素
System.out.println("删除元素");
list.remove(0);
System.out.println(list);
list.remove("小米");
System.out.println(list);
}
}

基本类型的 List

注意:所有的集合只能存放引用类型的数据,对于基本类型需要装箱操作

package 集合;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator; public class NumList {
public static void main(String[] args) {
List list = new ArrayList();
list.add(10);
list.add(20);
list.add(30);
list.add(40);
System.out.println(list);
//元素的获取
System.out.println(list.get(1));
//元素的遍历
System.out.println("---------元素的遍历---------");
ListIterator it = list.listIterator();
while(it.hasNext()) {
System.out.println(it.next());
}
//返回元素的位置
System.out.println("-----返回元素位置------");
System.out.println(list.indexOf(10));
//删除指定元素,和引用类型的删除不同
System.out.println(list);
// list.remove(10); //错误做法
list.remove(new Integer(10));
System.out.println(list);
}
}

List的实现类

ArrayList

  1. 数组结构实现,查询快,增删慢
  2. 运行效率高,线程不安全

LinkedList

  1. 链表结构实现,查询慢,增删快

Vector

  1. 数组结构实现,查询快,增删慢
  2. 运行效率低,线程安全

List子接口的更多相关文章

  1. java集合_collection子接口 list的特有方法,ArrayList类体现

    /* Collection |--List:元素是有序的,元素可以重复.因为该集合体系有索引. |--ArrayList:底层的数据结构使用的是数组结构.特点:查询速度很快.但是增删稍慢.线程不同步. ...

  2. Collection子接口(List/Set/Queue/SortedSet)

    Collection基本的子接口: List:能够存放反复内容 Set:不能存放反复内容,全部反复的内容靠hashCode()和equals()两个方法区分 Queue:队列接口 SortedSet: ...

  3. 基于三层交换机和基于路由子接口的vlan间路由

    1:通过三层交换机实现vlan间的通信:为三层交换机创建vlan,设置交换机的两个SVI,并配置IP地址. (在二层交换机上只能配置一个SVI端口,用来实现交换机交换机远程管理,在三层交换机上可以配置 ...

  4. 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)

    16.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同 ...

  5. 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口

    [源码下载] 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口 作者 ...

  6. Spring-IOC 扩展点 BeanFactoryPostProcessor及其子接口解析

    BeanFactoryPostProcessor 接口的英文描述: Allows for custom modification of an application context's bean de ...

  7. Java基础-Collection子接口之Set接口

    Java基础-Collection子接口之Set接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学习Collection接口时,记得Collection中可以存放重复元素,也可 ...

  8. Java基础-Collection子接口之List接口

    Java基础-Collection子接口之List接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们掌握了Collection接口的使用后,再来看看Collection接口中 ...

  9. 【vlan-trunk和802.1q子接口配置】

    根据项目需求,搭建好拓扑图如下: 配置sw1的g1/0/3的/trunk,把g1/0/1和g1/0/2分别加入vlan 10 和 vlan 20 配置sw1的g1/0/3的/trunk,把g1/0/1 ...

  10. 如何得到一个接口所有的实现类(及子接口)?例如:Eclipse IDE

    (一)Eclipse IDE的做法 它会解析所有的Java文件.Class文件. 技巧:在Eclipse中,选中Interface,按下F4,就可以查看到所有的实现类及子接口. 例如: (二)自己怎么 ...

随机推荐

  1. Json解析案例-teachers数据集

    背景: 通过平台执行接口时,接口往往返回的JSON串,所以平台要能提供方便快捷的JSON解析函数. 一.Json字符串: 1 { 2 "lemon": { 3 "teac ...

  2. SpringBoot项目bootstrap.yml配置文件不加载

    bootstrap.yml需要引入springcloud的包才会加载 <dependency> <groupId>org.springframework.cloud</g ...

  3. MFC屏蔽按键ESC、ENTER、Alt+F4

    1.重写 重写下面的函数 virtual BOOL PreTranslateMessage(MSG* pMsg); 2.函数体 BOOL Cfile_trans_codeDlg::PreTransla ...

  4. 遍历 HashMap 的 5 种最佳方式

    使用 Iterator 遍历 HashMap EntrySet 使用 Iterator 遍历 HashMap KeySet 使用 For-each 循环迭代 HashMap 使用 Lambda 表达式 ...

  5. 「Codeforces 79D」Password

    Description 有一个 01 序列 \(a_1,a_2,\cdots,a_n\),初始时全为 \(0\). 给定 \(m\) 个长度,分别为 \(l_1\sim l_m\). 每次可以选择一个 ...

  6. C++输出控制小数点后位数的方法

    以C++输出小数点两位数为例 setprecision(n)使用方法总结 首先要记住写头文件 #include <iomanip> //不要忘了头文件 以下是控制小数位数的三种写法 //t ...

  7. docker-部署jumpserver

    jumpserver https://jumpserver.org/ Docker 部署 jumpserver 堡垒机 容器部署 jumpserver-1.4.10 服务端 #最好单一个节点 容器运行 ...

  8. zbar解析二维码demo

    开发环境;ubuntu 18.04 IDE:clion 2019 源文件.cpp #include <opencv2/opencv.hpp> #include <zbar.h> ...

  9. 【jvm】02-手写自己的类加载器

    [jvm]02-手写自己的类加载器 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点个赞.加个 ...

  10. 对接网易云信音视频2.0呼叫组件集成到vue中,实现web端呼叫app,视频语音通话。

    项目中需要实现视频通话功能,经过公司的赛选,采用网易云信的视频通话服务,app小伙伴集成很顺利.web端需要实现呼叫app端用户.网易云信文档介绍不全,vue的demo满足不了需求,和客服人员沟通,只 ...