List接口介绍

java.util.List接口 extends Collection接口
List接口的特点:
1.有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)
2.有索引,包含了一些带索引的方法
3.允许存储重复的元素

List接口中带索引的方法(list集合特有)

- public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
- public E get(int index):返回集合中指定位置的元素。
- public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
- public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

注意:
操作索引的时候,一定要防止索引越界异常

IndexOutOfBoundsException:索引越界异常,集合会报
ArrayIndexOutOfBoundsException:数组索引越界异常
StringIndexOutOfBoundsException:字符串索引越界异常
public static void main(String[] args) {//创建一个List集合对象,多态List<String> list = new ArrayList<>();//使用add方法往集合中添加元素list.add("a");list.add("b");list.add("c");list.add("d");list.add("a");//打印集合System.out.println(list);//[a, b, c, d, a]  不是地址重写了toString
//方法介绍://public void add(int index, E element): 将指定的元素,//添加到该集合中的指定位置上。//在c和d之间添加一个hellolist.add(3,"hello");//[a, b, c, hello, d, a]System.out.println(list);//public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。//移除元素String removeE = list.remove(2);//第二个位置,从0开始System.out.println("被移除的元素:"+removeE);//被移除的元素:cSystem.out.println(list);//[a, b, hello, d, a]//public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。//把最后一个a,替换为AString setE = list.set(4, "A");System.out.println("被替换的元素:"+setE);//被替换的元素:aSystem.out.println(list);//[a, b, hello, d, A]

List集合遍历有3种方式

 //使用普通的for循环for(int i=0; i<list.size(); i++){//public E get(int index):返回集合中指定位置的元素。String s = list.get(i);System.out.println(s);}System.out.println("-----------------");//使用迭代器Iterator<String> it = list.iterator();while(it.hasNext()){String s = it.next();System.out.println(s);}System.out.println("-----------------");//使用增强forfor (String s : list) {System.out.println(s);}String r = list.get(5);//IndexOutOfBoundsException: Index 5 out-of-bounds for length 5System.out.println(r);}

List的子类(实现类)

ArrayList集合

java.util.ArrayList 集合数据存储的结构是数组结构。
元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。

LinkedList集合

java.util.LinkedList集合 implements List接口
LinkedList集合的特点:
1.底层是一个链表结构:查询慢,增删快
2.里边包含了大量操作首尾元素的方法
注意:使用LinkedList集合特有的方法,不能使用多态

- public void addFirst(E e):将指定元素插入此列表的开头。
- public void addLast(E e):将指定元素添加到此列表的结尾。
- public void push(E e):将元素推入此列表所表示的堆栈。

此方法等效于 addFirst(E)。

- public E getFirst():返回此列表的第一个元素。
- public E getLast():返回此列表的最后一个元素。- public E removeFirst():移除并返回此列表的第一个元素。
- public E removeLast():移除并返回此列表的最后一个元素。
- public E pop():从此列表所表示的堆栈处弹出一个元素。- public boolean isEmpty():如果列表不包含元素,则返回true。
public static void main(String[] args) {show03();
}/*- public E removeFirst():移除并返回此列表的第一个元素。- public E removeLast():移除并返回此列表的最后一个元素。- public E pop():从此列表所表示的堆栈处弹出一个元素。此方法相当于 removeFirst*/
private static void show03() {//创建LinkedList集合对象LinkedList<String> linked = new LinkedList<>();//使用add方法往集合中添加元素linked.add("a");linked.add("b");linked.add("c");System.out.println(linked);//[a, b, c]//String first = linked.removeFirst();String first = linked.pop();System.out.println("被移除的第一个元素:"+first);String last = linked.removeLast();System.out.println("被移除的最后一个元素:"+last);System.out.println(linked);//[b]
}
/*- public E getFirst():返回此列表的第一个元素。- public E getLast():返回此列表的最后一个元素。*/
private static void show02() {//创建LinkedList集合对象LinkedList<String> linked = new LinkedList<>();//使用add方法往集合中添加元素linked.add("a");linked.add("b");linked.add("c");//linked.clear();//清空集合中的元素 在获取集合中的元素会抛出NoSuchElementException//public boolean isEmpty():如果列表不包含元素,则返回true。if(!linked.isEmpty()){String first = linked.getFirst();System.out.println(first);//aString last = linked.getLast();System.out.println(last);//c}
}/*- public void addFirst(E e):将指定元素插入此列表的开头。- public void addLast(E e):将指定元素添加到此列表的结尾。- public void push(E e):将元素推入此列表所表示的堆栈。此方法等效于 addFirst(E)。*/private static void show01() {//创建LinkedList集合对象LinkedList<String> linked = new LinkedList<>();//使用add方法往集合中添加元素linked.add("a");linked.add("b");linked.add("c");System.out.println(linked);//[a, b, c]//public void addFirst(E e):将指定元素插入此列表的开头。//linked.addFirst("www");linked.push("www");System.out.println(linked);//[www, a, b, c]//public void addLast(E e):将指定元素添加到此列表的结尾。此方法等效于 add()linked.addLast("com");System.out.println(linked);//[www, a, b, c, com]
}

list接口还有Vector实现类,底层也是一个数组结构,是单线程,速度较慢。在java1.2之后被arraylist所代替。

进阶06 List集合相关推荐

  1. Python进阶06 循环对象

    Python进阶06 循环对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 这一讲的主要目的是为了大家在读Python程序的时 ...

  2. django进阶06数据库事务

    原创:django进阶06数据库事务 锁 1.1:乐观锁: 概念:同一条数据很少会因为并发修改而产生冲突,适用于读多写少的场景. 实现方式:读取一个字段,执行处理逻辑,当需要更新数据时,再次检查该字段 ...

  3. python进阶06并发之二技术点关键词

    原创博客地址:python进阶06并发之二技术点关键词 GIL,线程锁 python中存在GIL这个"线程锁", 关键地方可以使用c语言解决 GIL问题 然后可以提高cpu占用效率 ...

  4. Java进阶,Set集合,Map集合

    Java进阶,Set集合,Map集合 一.Set系列集合 1.Set系列集系概述 Set系列集合特点 无序:存取顺序不一致 不重复:可以去除重复 无索引:没有带索引的方法,所以不能使用普通for循环遍 ...

  5. 蓝桥杯单片机 | 特训案例【进阶06】基于PCF8591的DAC模拟电压输出

    [1]题目要求 新建工程,以I/O模式编写代码,在CT107D单片机综合训练平台上,实现以下功能: 1.将IIC总线的底层驱动代码文件正确移植到工程中. 2.将J5配置BTN模式,把S4设置为独立按键 ...

  6. Python基础(06)——集合(set、frozenset)

    Python基础(06)--集合(set.frozenset) 集合是无序无索引的集合,在Python中集合用花括号表示,字典也用花括号表示. 1.set的定义 创建集合:集合种的集合项可以是不同数据 ...

  7. javascript 进阶篇(集合)

    目录 第一章 系好安全带,准备启航 1-1 让你认识JS 任务 1-2 编程练习 任务 第二章 你要懂的规则(JS基础语法) 2-1 什么是变量 2-3 确定你的存在(变量声明) 任务 2-4 多样化 ...

  8. Java进阶06 容器

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Java中有一些对象被称为容器(container).容器中可以包含多个对象,每个 ...

  9. 进阶 09 Map集合

    Map集合 java.util.Map<k,v>集合 Map集合的特点: 1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)2.Map集合中的元素,key和va ...

最新文章

  1. MyBatis-Plus,搭配 Spring Boot 使用,一篇就够了
  2. 认识RESTful设计风格
  3. java 行为模式_java设计模式--行为模式
  4. C++: int int int * int**的区别、联系和用途
  5. Fire Net HDU1045
  6. 红包雨效果html,js+css实现红包雨效果
  7. 【HDOJ】4363 Draw and paint
  8. 第二个冲刺周期第二天
  9. 编写两个函数分别求两个数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个数由键盘输入。 输入输出格式示例: 输入:24 16 输出:zdgys=8,zxgbs=48
  10. python自学行吗-Python能自学吗?
  11. oracle停数据库服务器,优化Oracle停机时间及数据库恢复
  12. 寻找代理服务器的常用软件
  13. steam好友服务器当前处于离线状态,steam好友在线为什么显示离线
  14. 【spring】 官网文档手册(附中文网址)
  15. 边策划边制作的游戏开发日志(一) 用Untiy制作类似《莱莎的炼金工坊》移动和视角系统(第三人称控制系统)
  16. (一)unity自带的着色器源码剖析之——————UnityShaderVariables.cginc文件
  17. 40000字 Matplotlib 实操干货,真的全!
  18. 我的世界 为何用java开发?
  19. 曲线行驶最后什么时候回正_曲线行驶出弯时什么时候回正方向
  20. 手机,电脑的蓝牙传送文件

热门文章

  1. 如何使用powerdesigner导出sql脚本
  2. Javascript第四章变量的提升和预解析方法流程第四课
  3. 员工主动辞职公司也要支付经济补偿金的17种情况
  4. matlab 传递函数求截止频率,高分求解RC滤波电路的传递函数和截止频率
  5. thinkphp5 事务回滚_卓象程序员:ThinkPHP5实现事务功能
  6. mysql 安装部署
  7. setInterval()与setTimeout()计时器
  8. 我是WPF菜鸟之(4)---关于XAML与逻辑代码
  9. HelloWorld Windows Live Writer
  10. linux环境下的TIME_WAIT和CLOSE_WAIT问题解决方法