java之List接口(单列集合)
List接口概述
List接口特点:
- 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。
- 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
- 集合中可以存储重复的元素,通过元素的equals方法,来比较是否为重复的元素。
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:字符串索引越界异常
代码举例
package demo01List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Demo01List {
public static void main(String[] args) {
//创建一个List集合对象,多态
List<Integer> list = new ArrayList<>();
//使用add方法往集合中添加元素
list.add(1);
list.add(2);
list.add(3);
list.add(4);
//打印集合,不是地址重写了toString
System.out.println(list);//[1, 2, 3, 4]
//public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
//在3 和 4元素之间添加元素88
list.add(3, 88);
System.out.println(list);//[1, 2, 3, 88, 4]
/*public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。‘
移除index为2的元素
*/
System.out.println("被移除的元素:" + list.remove(2));//被移除的元素:3
//打印集合
System.out.println(list);//[1, 2, 88, 4]
/*
public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
把index为1的元素替换为999
*/
System.out.println("被替换的元素:" + list.set(0, 999));
//打印集合
System.out.println(list);
// List集合遍历有3种方式
//方式1:普通for循环
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");//999 2 88 4
}
System.out.println(" ");
//方式2:迭代器遍历
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");//999 2 88 4
}
System.out.println(" ");
//增强for循环 建议使用
for (Integer integer : list) {
System.out.print(integer + " ");//999 2 88 4
}
}
}
List的子类
- java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以 ArrayList 是最常用的集合。许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。
- public void addFirst(E e) :将指定元素插入此列表的开头。
- public void addLast(E e) :将指定元素添加到此列表的结尾。
- public E getFirst() :返回此列表的第一个元素。
- public E getLast() :返回此列表的最后一个元素。
- public E removeFirst() :移除并返回此列表的第一个元素。
- public E removeLast() :移除并返回此列表的最后一个元素。
- public E pop() :从此列表所表示的堆栈处弹出一个元素。
- public void push(E e) :将元素推入此列表所表示的堆栈。
- public boolean isEmpty() :如果列表不包含元素,则返回true。
代码举例:
package demo01List;
import java.util.LinkedList;
public class Demo01LinkedList {
public static void main(String[] args) {
//使用子类特有的方法不能使用多态
LinkedList<String> linkedList = new LinkedList<>();
//添加元素
linkedList.add("张三");
linkedList.add("张四");
linkedList.add("张五");
//打印集合,查看里面的元素
System.out.println(linkedList);//[张三, 张四, 张五]
//- public void addFirst(E e):将指定元素插入此列表的开头。public void push(E e)此方法等效于 addFirst(E)。
linkedList.addFirst("张二");
// public void addLast(E e):将指定元素添加到此列表的结尾。
linkedList.addLast("张六");
//打印集合,查看里面的元素
System.out.println(linkedList);//[张二, 张三, 张四, 张五, 张六]
// - public E getFirst():返回此列表的第一个元素。集合中的元素没有改变。
System.out.println("集合中的第一个元素是:" + linkedList.getFirst());//集合中的第一个元素是:张二
// - public E getLast():返回此列表的最后一个元素。集合中的元素没有改变。
System.out.println("集合中的最后一个元素是:" + linkedList.getLast());//集合中的最后一个元素是:张六
//打印集合,查看里面的元素
System.out.println(linkedList);//[张二, 张三, 张四, 张五, 张六]
// public E removeFirst():移除并返回此列表的第一个元素。public E pop():此方法相当于 removeFirst。集合中的元素已经发生改变
System.out.println("删除的集合中的第一个元素:" + linkedList.removeFirst());//删除的集合中的第一个元素:张二
// public E removeLast():移除并返回此列表的最后一个元素。集合中的元素已经发生改变
System.out.println("删除的集合中的最后一个元素:" + linkedList.removeLast());//删除的集合中的最后一个元素:张六
//打印集合,查看里面的元素
System.out.println(linkedList);//[张三, 张四, 张五]
//public boolean isEmpty():如果列表不包含元素,则返回true。
System.out.println("集合中是不包含元素:" + linkedList.isEmpty());//集合中是不包含元素:false
//清空集合
linkedList.clear();
System.out.println("集合中是不包含元素:" + linkedList.isEmpty());//集合中是不包含元素:true
}
}
Vector集合
Vector集合是最早期的集合,JDK1.0版本开始就存在
特点:
- 底层是的数据结构是:增长的对象数组,增删慢,查询快
- 从 Java 2 平台 v1.2 开始,此类改进为可以实现
List接口,使它成为 Java Collections Framework 的成员,可以使用迭代器 Vector是同步的,他是单线程实现的,效率慢,但是安全
JDK9对集合添加的优化
- 当集合中存储的元素的个数已经确定了,不在改变时使用
注意:
- of方法只适用于List接口,Set接口,Map接口,不适用于接接口的实现类
- of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
- Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常
package demo01Map;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class JDK9 {
public static void main(String[] args) {
List<String> list = List.of("a", "b", "a", "c", "d");
System.out.println(list);//[a, b, a, c, d]
//list.add("w");//UnsupportedOperationException:不支持操作异常
//Set<String> set = Set.of("a", "b", "a", "c", "d");//IllegalArgumentException:非法参数异常,有重复的元素
Set<String> set = Set.of("a", "b", "c", "d");
System.out.println(set);
//set.add("w");//UnsupportedOperationException:不支持操作异常
//Map<String, Integer> map = Map.of("张三", 18, "李四", 19, "王五", 20,"张三",19);////IllegalArgumentException:非法参数异常,有重复的元素
Map<String, Integer> map = Map.of("张三", 18, "李四", 19, "王五", 20);
System.out.println(map);//{王五=20, 李四=19, 张三=18}
//map.put("赵四",30);//UnsupportedOperationException:不支持操作异常
}
}
java之List接口(单列集合)的更多相关文章
- java内部类、接口、集合框架、泛型、工具类、实现类
.t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类 ...
- java 单列集合总结
Collection 接口 add() remove() contains() clear(); size(); 迭代器遍历(普通迭代器,不能再遍历过程中修改集合的长度) List接口 单列集合 有序 ...
- Java之Iterator接口(遍历单列集合的迭代器)
Iterator接口概述 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator . Iterator 接口也是Java集合中的一员,但 ...
- Java之Collection接口(单列集合根接口)
集合概述 集合到底是什么呢?集合:集合是java中提供的一种容器,可以用来存储多个数据 集合和数组既然都是容器,它们有啥区别呢? 区别1: 数组的长度是固定的. 集合的长度是可变的. 区别2: 数组 ...
- Java中的集合(二)单列集合顶层接口------Collection接口
Java中的集合(二)单列集合顶层接口------Collection接口 Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法.由于Iterab ...
- java之Set接口(单列集合)
Set接口概述 java.util.Set 接口和 java.util.List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Coll ...
- Java学习笔记32(集合框架六:Map接口)
Map接口与Collection不同: Collection中的集合元素是孤立的,可理解为单身,是一个一个存进去的,称为单列集合 Map中的集合元素是成对存在的,可理解为夫妻,是一对一对存进去的,称为 ...
- Java之Map接口(双列集合)
Map集合概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对 ...
- Java学习:单列集合Collection
集合 学习集合的目标: 会使用集合存储数据 会遍历集合,把数据取出来 掌握每种集合的特性 集合和数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型 ...
随机推荐
- Dubbo 2.7新特性之异步化改造
这是why技术的第1篇原创文章 我与Dubbo的二三事 我是2016年毕业的,在我毕业之前,我在学校里面学到的框架都是SSH,即struts+spring+hibernate,是的你没有看错,在大学里 ...
- BGA256芯片植球全过程体验(原创)
今天工具到位,迫不亟待,需要对手上的BGA256的FPGA芯片进行植球, 该芯片买来的时候是有球的,只是在焊接后,由于电路板故障或焊接问题,需要拆下来芯片,导致球损失,需要重新植球. 一般植球都是将所 ...
- 层叠机制和继承的概念以及CSS中选择器的优先级
层叠机制: 一个元素的某个特定的样式属性可能来自行间的style属性.内联样式表或者外部引入的样式表,以及浏览器自定义的样式,还有就是继承自父元素的样式,但是最终只会选择其中的某一个来表示,这个选择的 ...
- 【CuteJavaScript】ES2019 新特性汇总
最近 ECMAScript2019,最新提案完成:tc39 Finished Proposals,我这里也是按照官方介绍的顺序进行整理,如有疑问,可以查看官方介绍啦~ 另外之前也整理了 <ES6 ...
- 自建CA证书搭建https服务器
由于CA收费,所以可以自建CA,通过将CA导入浏览器实现https的效果,曾经12306购票就需要自行导入网站证书. 关于https 2015年阿里巴巴将旗下淘宝.天猫(包括移动客户端)全站启用HTT ...
- 说说 WebSocket,3 分钟让你全面认识它
"WebSocket 是一项先进的技术,它可以在用户的浏览器和服务器之间打开交互式通信会话.通过 WebSocket,您可以向服务器发送消息并实时接收响应,而无需通过传统的轮询服务器的方式来 ...
- Jrules sample server 配置
配置文件位置:[Jrules install location]/shared/tools/AppServerCommunityEdition/var/config
- Oracle数据库备份/导出(exp/expd)、导入(imp/impd)
常用的oracle数据库备份(导入/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导入导出工具,后者是Oracle10g后出现的,下面进行分别介绍! 1.e ...
- 基于C# WPF框架的贪吃蛇
游戏开始界面 游戏开始 共有两条蛇,吃到红色食物加1分,吃到绿色毒食物减1分,知道0不减: 碰到墙壁游戏结束,碰到对方游戏结束,碰到自己游戏结束 此游戏通过Canvas画布布局,通过C#代码实现 游戏 ...
- Microsemi Libero使用技巧——FPGA全局网络的设置
前言 刚开始做Microsemi FPGA+SoC开发时,会用到几个ARM专用的IP Core,功能一复杂起来,就会遇到某些信号如rst_n不能分配到指定的引脚上的情况,IO类型为CLKBUF,并不是 ...