List 接口及其常用方法
List 接口基本介绍
List接口是Collection接口的子接口,其主要特点如下:
List中元素有序,是按照元素的插入顺序进行排序的。每个元素都有一个与之关联的整数型索引(索引从 0 开始),可以根据索引来访问和操作元素,可以使用普通 for 循环遍历。List中可以包含重复的元素。
public class ListTest() {
public static void main(String[] args) {
// List 中元素有序、且可重复
List list = new ArrayList();
list.add("Jack");
list.add("Rose");
list.add("May");
list.add("Luck");
list.add("Jack");
System.out.println("list = " + list); // list = [Jack, Rose, May, Luck, Jack]
// List 支持索引
System.out.println(list.get(2)); // May
}
}
List 接口常用方法
下面的代码以其实现类ArrayList演示List接口的常用方法。
public class ListMethod() {
public static void main(String[] args) {
List list = new ArrayList();
// 添加指定元素到列表末尾
list.add("任盈盈");
list.add("赵敏");
System.out.println("list = " + list); // list = [任盈盈, 赵敏]
// void add(int index, E element)
// 在此列表的指定位置插入指定的元素。
// 将当前位于该位置的元素(如果有)以及后续的元素向右移动(索引加一)。
list.add(1, "周芷若");
System.out.println("list = " + list); // list = [任盈盈, 周芷若, 赵敏]
// boolean addAll(int index, Collection<? extends E> c)
// 将指定集合中的所有元素按指定位置插入到此列表中。
// 将当前位于该位置的元素(如果有)以及后续的元素向右移动(索引增加)。
// 新元素将按照指定集合迭代器返回它们的顺序出现在此列表中。
List list1 = new ArrayList();
list1.add("风清扬");
list1.add("任我行");
list.addAll(2, list1);
System.out.println("list = " + list); // list = [任盈盈, 周芷若, 风清扬, 任我行, 赵敏]
// E get(int index):返回此列表中指定位置的元素。
System.out.println(list.get(1)); // 周芷若
list.add("风清扬");
System.out.println("list = " + list); // list = [任盈盈, 周芷若, 风清扬, 任我行, 赵敏, 风清扬]
// int indexOf(Object o)
// 返回此列表中指定元素第一次出现的索引,如果列表不包含该元素,则返回 -1。
System.out.println(list.indexOf("风清扬")); // 2
// int lastIndexOf(Object o)
// 返回此列表中指定元素最后一次出现的索引,如果列表不包含该元素,则返回 -1。
System.out.println(list.lastIndexOf("风清扬"));// 5
// E remove(int index):移除此列表中指定位置的元素。
// 将任何后续的元素向左移动(其索引减一)。返回从列表中移除的元素。
list.remove(0);
System.out.println("list = " + list); // list = [周芷若, 风清扬, 任我行, 赵敏, 风清扬]
// boolean remove(Object o):从列表中移除指定元素的第一个匹配项(如果存在)。
// 如果列表不包含该元素,则列表保持不变。如果列表发生更改,则返回 true。
list.remove("风清扬");
System.out.println("list = " + list); // list = [周芷若, 任我行, 赵敏, 风清扬]
//E set(int index, E element):用指定元素替换列表中指定位置的元素。
list.set(1, "张无忌");
System.out.println("list = " + list); // list = [周芷若, 张无忌, 赵敏, 风清扬]
// List<E> subList(int fromIndex, int toIndex)
// 返回此列表中从 fromIndex(包括)到 toIndex(不包括)的子集合。
// 如果 fromIndex 和 toIndex 相等,则返回的列表为空。
List list2 = list.subList(1, 3);
System.out.println("list2 = " + list2); // list2 = [张无忌, 赵敏]
// 该方法消除了显式的范围操作的需求(这种操作通常用于数组)。
// 需要对列表的一部分进行的操作都可以通过传递子列表视图而不是把整个列表作为范围,
// 类似的习惯用法也可以用于 indexOf 和 lastIndexOf 方法。
// 例如,以下习惯用法从列表中移除了一系列元素:
System.out.println("list = " + list); // 输出:list = [周芷若, 张无忌, 赵敏, 风清扬]
list.subList(1, 3).clear();
System.out.println("list = " + list);// 输出:list = [周芷若, 风清扬]
}
}
List 接口遍历元素方式
List接口可以使用 Iterator(迭代器)、增强 for 循环和普通 for 循环三种方式来遍历元素,下面的代码以其实现类Vector演示List接口遍历元素的方式。
public class ThroughElements() {
public static void main(String[] args) {
List list = new Vector();
list.add("蛋挞");
list.add("芝士蛋糕");
list.add("提拉米苏");
System.out.println("---使用 Iterator---");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
System.out.println(o);
}
System.out.println("---使用增强 for 循环---");
for (Object o : list) {
System.out.println(o);
}
System.out.println("---使用普通 for 循环---");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
List 接口及其常用方法的更多相关文章
- java中集合类中Collection接口中的Map接口的常用方法熟悉
1:Map接口提供了将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.Map接口中同样提供了集合的常用方法. 2:由于Map集合中的元素是通过key,value,进行存储的,要 ...
- java中集合类中Collection接口中的Set接口的常用方法熟悉
1:Set集合由Set接口和Set接口的实现类组成,Set接口继承了Collection接口,因为包含Collection接口的所有方法. 2:由于Set接口中不允许存在重复值,因此可以使用Set集合 ...
- java中集合类中Collection接口中的List接口的常用方法熟悉
1:集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器. 2:区别集合类和数组.(1)数组的长度是固定的,集合的长度是可变的.(2)数组是用来存放基本数据类型的,集 ...
- 集合概述及Collection接口的常用方法
java集合像是一种容器,可以动态的把多个对象的引用放到容器中 java的集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组 package com.aff.coll; imp ...
- JAVAEE_Servlet_14_HttpServletRequest接口以及常用方法(一)
HttpServletRequest接口 * javax.servlet.http.HttpServletRequest 接口 * 继承关系 HttpServletRequest---继承---> ...
- Collection接口的常用方法
[添加功能] boolean add(Object obj); //添加一个元素. boolean addAll(Collection c); //添加一个集合的元素(在后面追加). [删除功能] v ...
- Python 接口自动化常用方法封装
#!/usr/bin/env python # -*- coding:utf-8 -*- # ************************************* # @Time : 2019/ ...
- Java集合框架的四个接口
接口 [四个接口 collection list set map 的区别] collection 存储不唯一的无序的数据 list 存储有序的不唯一的数据 set 存储无序的唯一的数据 m ...
- Java集合框架之四大接口、常用实现类
Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...
- java内部类、接口、集合框架、泛型、工具类、实现类
.t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类 ...
随机推荐
- IBM Cloud Computing Practitioners 2019 (IBM云计算从业者2019)Exam答案
Cloud Computing Practitioners 2019 IBM Cloud Computing Practitioners 2019 (IBM云计算从业者2019)Exam答案,加粗的为 ...
- [Linux]调整swap
在启动Tomcat的过程中,tomcat/catalina.out中报出如下故障: > /opt/govern/wydaas/logs/catalina.out # There is insuf ...
- 四月二十日java基础知识
1.不可被继承的成员与最终类:在默认情况下,所有的成员变量和成员方法都可以被覆盖,如果父类的成员不希望被子类的成员锁覆盖可以将它们声明为final.如果用final来修饰成员变量,则说明该成员变量是最 ...
- DRF的限流组件(源码分析)
DRF限流组件(源码分析) 限流,限制用户访问频率,例如:用户1分钟最多访问100次 或者 短信验证码一天每天可以发送50次, 防止盗刷. 对于匿名用户,使用用户IP作为唯一标识. 对于登录用户,使用 ...
- 笔记九:线程间的通信(pthread_create()和pthread_self())
linux高级编程之线程间的通信:(pthread_create().pthread_self()) 1.线程概念 线程包含了表示进程内执行环境必须得信息,其中包括进程中标识线程的线程I ...
- node服务端
一,node起服务+数据交互+中间件 什么是node express koa node是js在后端运行时的一个环境 express,koa是基于node的框架,快速构建web应用 前后端交互方式 1. ...
- pip 国内源地址
1.使用方式 pip install 包名 -i 国内源地址 2.国内源地址 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi. ...
- SDK日志上传性能优化
问题描述 在SDK初始化时,会在init方法中开启一个倒计时,在5s倒计时结束后使用子线程将本地保存的历史日志信息上传到后台. 因业务需要,在日志在发送上传前,对日志数据上传时需要对日志数据做编码和特 ...
- 2021-08-09:给定一个有正、有负、有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k。1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做?
2021-08-09:给定一个有正.有负.有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k.1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做? 福大大 答案20 ...
- Django-账号用户密码修改
Django账号密码修改命令: python manage.py changepassword python manage.py changepassword 实操分析: 第一次修改失败是因为违反了密 ...