JavaSE List集合
我们掌握了Collection接口的使用后,再来看看Collection接口中的子接口和实现类,他们都具备那些特性呢?
接下来,我们一起学习Collection中的常用几个子接口:
java.util.List 集合接口
java.util.Set 集合接口
List接口特点
List接口底层维护的是可变数组,集合中的每个元素都有对应的索引,通过索引就可以精确的操作集合中的元素。
它是一个元素存取有序的集合。可以保证元素的存取顺序。
它是一个可以保存重复元素的集合,通过元素的equals方法。
List接口的成员方法
List接口继承了父接口Collection中的所有方法,并且因为List底层维护的是可变数组,所以有自己的特有方法
public void add(int index, E element): 将指定的元素,添加到该集合的指定下标位置。public E get(int index):返回集合中指定下标对应的元素。public E remove(int index): 移除集合中指定下标对应的元素, 返回的是被移除的元素。List接口中有重载的
remove()方法,如果参数给定的为int类型,则调用的为List接口中特的方法。public E set(int index, E element):用指定元素替换集合中指定下标的元素,返回被替换的元素。
步骤
创建集合测试类
使用多态的方式newList接口的实现类对象
使用List接口中的特有方法,对集合进行增删改查等操作。
public class ListDemo {
public static void main(String[] args) {
// 创建List集合对象
List<String> list = new ArrayList<>();
// 给集合中添加原始数据
list.add("西游记");
list.add("红楼梦");
list.add("水浒传");
list.add("三国演义");
System.out.println(list);
// 使用List集合特有的指定具体下标添加元素的方法
list.add(1,"天龙八部");
list.add(3,"射雕英雄传");
System.out.println(list);
// 使用List集合的特有方法,获取指定下标对应的元素
String s = list.get(1);
System.out.println("s = " + s);
// 使用List集合的特有方法,修改指定下标对应的元素
String set = list.set(1, "神雕侠侣");
System.out.println("set = " + set); // 返回的数据为修改前的数据
/*
使用List集合特有的方法,删除指定下标对应的数据。并返回被删除的数据。
注意:在List接口中有重载的remove()方法存在。如果给定的参数为整数,
则默认调用List接口中的remove方法。
Collection: remove(Object obj )删除指定的元素
List: remove(int index )删除指定下标对应的元素
*/
String remove = list.remove(1);
System.out.println("remove = " + remove);
}
}
List集合接口的特点为可以保存重复的元素,并且可以保证元素的存取顺序。因为集合底层使用的可变数组,所有List集合接口中的特有方法都是围绕下标进行操作的。
List集合的遍历
因为List集合有下标,所以遍历的方式比较多。
List集合继承Collection集合,所以可以直接使用
Iterator对List集合进行遍历。高级for循环底层使用的迭代器,所以List集合也可以使用高级for循环遍历。
因为List集合中的元素都有下标,而List集合中有基于下标获取对应元素的方法,所以List集合也可以使用普通for循环进行遍历。
注意:因为List集合有下标,所以List集合中有一个特有的迭代器
ListIterator,可以通过特有方法listIterator()获取,因为并不常用,所以自行测试即可。
步骤
创建List集合对象
给集合中添加一些数据
分别使用3种不同的方式,遍历List集合中的数据
public class Demo {
public static void main(String[] args) {
// 创建List集合对象
List<String> list = new ArrayList<>();
// 给集合中添加数据
list.add("西游记");
list.add("红楼梦");
list.add("水浒传");
list.add("三国演义");
// 使用迭代器对集合进行遍历
for(Iterator<String> it = list.iterator(); it.hasNext(); ) {
System.out.println( it.next() );
}
// 使用高级for循环,遍历集合
for( String next : list ) {
System.out.println(next);
}
// 使用普通for循环遍历集合
for( int i = 0; i < list.size();i++ ) {
System.out.println(list.get(i));
}
}
}
小结
List集合是Collection集合的子接口,因此是可以使用迭代器和高级for循环进行遍历的。而因为List集合有下标,所以也可以通过下标来获取集合中的每一个数据。
因为在使用迭代器对集合操作的同时不能使用集合本身的方法在对集合进行操作。所以List集合在非遍历操作的情况下,一般都是使用普通for循环进行遍历。
ArrayList集合
简单说一下ArrayList的底层就可以了,具体用法和List一样
Array List的底层是数组 , 数组的特性就是 查询快 增删慢 , 因为数组是有下标的每个数据都会对应有一个自己的下标.

LinkedList集合
java.util.LinkedList集合数据存储的结构是双向链表结构。所以可以保证元素的存取顺序。链表结构有表头和表尾,特有方法都是围绕头和尾进行操作的。特点 : 增删慢,查找快

linkedList特有成员方法
实际开发中对一个集合元素的添加与删除有时会涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。
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 boolean isEmpty():如果列表不包含元素,则返回true。
public class LinkedListDemo {
public static void main(String[] args) {
// 创建LinkedList集合对象
LinkedList<String> list = new LinkedList<>();
// 特有方法给集合头尾添加元素
list.addFirst("abc");
list.addFirst("bcd");
list.addFirst("cde");
list.addFirst("def");
System.out.println(list);
// 特有方法获取集合头尾的元素
String first = list.getFirst();
System.out.println("first = " + first);
// 特有方法删除集合中的元素
String removeFirst = list.removeFirst();
System.out.println("removeFirst = " + removeFirst);
System.out.println(list);
// 特有方式遍历集合
/* while( !list.isEmpty() ) {
String pop = list.pop();
System.out.println(pop);
}*/
// 使用removeFirst()方法代替pop()方法
while( !list.isEmpty() ) {
String s = list.removeFirst();
System.out.println(s);
}
}
}
JavaSE List集合的更多相关文章
- JavaSE笔记-集合
Java集合大致可分为:List,Set,Map,Queue List:有序,可重复 Set:无序(输出和插入顺序不一定一致),不可重复 Map:映射关系,根据key去访问value Queue:队列 ...
- JavaSE Map集合
Map集合 在Map集合中保存的数据为一组数据,其中:一个数据为key,另外一个数据为value.而key和value具备对应的关系,在集合中它们属于一组(一对)数据.而每个key只能对应唯一的一个v ...
- JavaSE Set集合
明确Set集合接口的特点. java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collec ...
- JavaSE Collection集合
集合:是java中提供的一种容器,可以用来存储多个对象.可是我们前面学习的数组也是可以保存多个对象的,为什么还要提供集合容器呢?集合和数组它们有啥区别呢? 数组的长度是固定的.一旦创建完成不能改变长度 ...
- Javase之集合体系(4)之Map集合
集合体系之Map集合 ##Map<K,V>( 接口 ) 特点:将键映射到值对象,一个映射不能包含重复的键:每个键只能映射一个值 Map集合与Collection集合的区别 Map集合存 ...
- Javase之集合体系(2)之List及其子类ArrayList,LinkedList与Vector及其迭代器知识
集合体系之List及其子类ArrayList,LinkedList与Vector及其迭代器知识 List(接口) 特点:有序(存储与取出顺序相同),可重复 List子类特点: ArrayList: ...
- Javase之集合体系(3)之Set及其子类知识
集合体系之Set及其子类知识 Set(接口) public interface Set<E>extends Collection<E> 特点:无序(存储顺序与取出顺序不一致 ...
- Javase之集合泛型
集合泛型知识 泛型 是一种把类型明确工作推迟到创建对象或者调用方法的时候才明确的特殊类型. 也称参数化类型,把类型当成参数传递. 在jdk1.5中出现.一般来说经常在集合中使用. 格式 <数据类 ...
- Javase之集合体系之(1)集合顶层类Collection与其迭代器知识
集合体系之集合顶层类Collection与其迭代器知识 集合的由来:Java是一门面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,就必须把多个对象进行存储,而要存 ...
随机推荐
- 第34章:MongoDB-索引--用户管理
①用户管理 在MongoDB里面默认情况下只要是进行连接都可以不使用用户名与密码,因为要想让其起作用,则必须具备以下两个条件: ·条件一:服务器启动的时候打开授权认证: ·条件二:需要配置用户名和密码 ...
- 原生js获取元素的子元素
//使用firstChild //但是下面这种因为有空格,也算其子元素 <lable> <span id="onlinePerson" name="pe ...
- [solution] JZOJ 5459. 密室
[solution] JZOJ 5459. 密室 Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有$N$ 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的 ...
- [UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
上一篇心得记录中提到了 AudioGraph, 描述了一下 什么是 AudioGraph 以及其中涉及到的各种类型的 节点(Node). 这一篇就其中比较有意思的 AudioFrameInputNod ...
- samba 配置文件解析
[global] #定义全局策略 workgroup=MYGROUP #定义工作组 netbios name=MYSERVER #指定NetBios名称 interfaces=lo 192.168.1 ...
- Appium移动自动化测试入门及简单实例(python)
1.介绍 Appium是一个移动端的自动化框架,可用于测试原生应用.移动网页应用和混合型应用,且是跨平台的.可用于IOS和Android以及firefox的操作系统.原生的应用是指用android或i ...
- 被高通收购的CSR是一家怎样的公司
CSR plc(LSE:CSR),原名剑桥硅晶无线电或英商剑桥无线电(英语:Cambridge Silicon Radio),是一间创立于 1998年的跨国无厂半导体公司,总部位于英国剑桥.早期技术主 ...
- 2D转换与3D转换的区别
2D与3D的区别——2D 转换元素能够改变元素 x 和 y 轴.3D 转换元素还能改变其 Z 轴.
- SVN 分支主干的相互合并
1.主干合并到分支 1在本地trunk中先update一下,有冲突的解决冲突,保证trunk和repository已经完全同步, 2.在/branches /MyProject上右键,依次选择”Tor ...
- 理解 Python 的执行方式,与字节码 bytecode 玩耍 (上)
这里有个博客讲 Python 内部机制,已经有一些中文翻译. 可能因为我用的Python 3.5,例子跑起来有些不一样. 此外,我又查了其他一些参考资料,总结如下: Python 的执行方式 先看一个 ...