Java集合-----List详解
List中的元素是有序排列的而且可重复
1.LinkedList
LinkedList是非线程安全的,底层是基于双向链表实现的
LinkedList常用方法:
- toArray() 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
- size() 返回此列表中的元素数
- set(int index,E element) 用指定的元素替换此列表中指定位置的元素
- removeLast() 从此列表中删除并返回最后一个元素
- removeFirst() 从此列表中删除并返回第一个元素
- remove(int index) 删除该列表中指定位置的元素
- getFirst() 返回此列表中的第一个元素
- getLast() 返回此列表中的最后一个元素
- get(int index) 返回此列表中指定位置的元素
- add(E element) 将指定的元素追加到此列表的末尾
- add(int index,E element) 在此列表中的指定位置插入指定的元素
- addFirst(E element) 在该列表开头插入指定的元素
- addLast(E element) 将指定的元素追加到此列表的末尾
- clear() 从列表中删除所有元素
2.ArrayList
ArrayList是非线程安全的,底层是基于数组实现
ArrayList常用方法:
- toArray() 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
- subList(int fromIndex,int toIndex) 返回此列表中指定的
fromIndex
(包括)和toIndex
之间的独占视图 - size() 返回此列表中的元素数
- set(int index,E element) 用指定的元素替换此列表中指定位置的元素
- removeRange(int fromIndex,int toIndex) 从这个列表中删除所有索引在
fromIndex
(含)和toIndex
之间的元素 - remove(int index) 删除该列表中指定位置的元素
- isEmpty() 如果此列表不包含元素,则返回true
- get(int index) 返回此列表中指定位置的元素
- add(E element) 将指定的元素追加到此列表的末尾
- add(int index,E element) 在此列表中的指定位置插入指定的元素
- clear() 从列表中删除所有元素
package com.gather;
/**
* 人实体类
* @author yyx
* 2019年2月27日
*/
public class Person {
private String userName;
private Integer userAge; public Person(String userName, Integer userAge) {
super();
this.userName = userName;
this.userAge = userAge;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public Integer getUserAge() {
return userAge;
} public void setUserAge(Integer userAge) {
this.userAge = userAge;
} @Override
public String toString() {
return "Person [userName=" + userName + ", userAge=" + userAge + "]";
} }
package com.gather; import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List; /**
*
* @author yyx 2019年2月27日
*/
public class LIstPractise {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
Person p1 = new Person("张三", 22);
Person p2 = new Person("李四", 23);
Person p3 = new Person("王五", 18);
list.add(p1);
list.add(p2);
list.add(p3); // 第一种遍历方式:for循环
for (int i = 0; i < list.size(); i++) {
Person person = list.get(i);
System.out.println(person);
}
System.out.println("----------------");
// 第二种遍历方式:foreach
for (Person person : list) {
System.out.println(person);
}
System.out.println("----------------");
// 第三种遍历方式:Iterator
Iterator<Person> iterator = list.iterator();
while (iterator.hasNext()) {
Person person = iterator.next();
System.out.println(person);
}
System.out.println("----------------"); LinkedList<Person> linkedList=new LinkedList<>();
linkedList.addFirst(p3);
linkedList.add(p2);
linkedList.addLast(p1); //getFirst() 返回此列表中的第一个元素
System.out.println(linkedList.getFirst());
//getLast() 返回此列表中的最后一个元素
System.out.println(linkedList.getLast());
System.out.println("----------------"); //toArray() 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组
Object[] persons=linkedList.toArray();
System.out.println(persons[0]);
}
}
3.ArrayList和LinkedList的区别
- ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构
- 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针
- 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
- ArrayList没有实现Queue队列接口,LinkedList实现了Queue接口
4.Vector
Vector是线程安全的,底层是基于动态数组实现
Vector常用方法:
- add(E element) 将指定的元素追加到此Vector的末尾
- add(int index,E element) 在此Vector中的指定位置插入指定的元素
- elementAt(int index) 返回指定索引处的组件
- get(int index) 返回此向量中指定位置的元素
- removeElementAt(int index) 删除指定索引处的组件
- removeRange(int fromIndex,int toIndex) 从此列表中删除所有索引为
fromIndex
(含)和toIndex
之间的元素
package com.gather; import java.util.Iterator;
import java.util.Vector;
/**
* 大小可以动态变化,其存储由容器自动处理
* @author yyx
* 2019年2月28日
*/
public class VectorPractise {
public static void main(String[] args) {
Vector<Person> vector = new Vector<>();
Person p1 = new Person("张三", 22);
Person p2 = new Person("李四", 23);
Person p3 = new Person("王五", 18);
vector.add(p1);
vector.add(p2);
vector.add(p3); Iterator<Person> iterator = vector.iterator();
while (iterator.hasNext()) {
Person person = iterator.next();
System.out.println(person);
}
}
}
Java集合-----List详解的更多相关文章
- java集合框架详解
java集合框架详解 一.Collection和Collections直接的区别 Collection是在java.util包下面的接口,是集合框架层次的父接口.常用的继承该接口的有list和set. ...
- Java集合框架详解(全)
一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...
- Java—集合框架详解
一.描述Java集合框架 集合,在Java语言中,将一系类的对象看成一个整体. 首先查看jdk中的Collection类的源码后会发现Collection是一个接口类,其继承了java迭代接口Iter ...
- JAVA集合类型详解
一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...
- Java集合-----Set详解
Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的 HashSet常用方法: add(E element) 将指定的元素添加到此集合(如果尚未存 ...
- Java集合-----Map详解
Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value Map 中的 key 和 value 都可以是任何引用类型的数据 Map 中的 ...
- java集合(2)- java中HashMap详解
java中HashMap详解 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 H ...
- Java集合中List,Set以及Map等集合体系详解
转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...
- 最新java数组的详解
java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...
随机推荐
- Jenkins 忘记admin用户名以及密码
1.进入 如果安装的war包,路劲如下: C:\Users\LENOVO\.jenkins\ 2. 1)方式一: 打开config.xml ->将useSecurity设置为false 2)方 ...
- 20165225《Java程序设计》第八周学习总结
20165225<Java程序设计>第八周学习总结 1.视频与课本中的学习: 第十二章学习总结 1.继承Thread类创建线程,程序中如果想要获取当前线程对象可以使用方法:Thread.c ...
- vim 私人快捷键备忘录
i 上 k 下 j 左 l 右 ( 上移一段 ) 下移一段 * 搜索关键字 d 删除 y 复制 p 粘贴 h 插入 H 头插 o 下开一行 O 上开一行 f 后跳指定关键字 F 前跳指定关键字 e 字 ...
- 简单的document操作
1.新增商品:新建文档,建立索引PUT /index/type/id{ "json数据"}例如:PUT /ecommerce/product/1{ "name" ...
- 关于分页Pagination的使用
在这个例子当中,用的是ssm框架整合,并且用的是Pagination实现分页 先来看一下分页中用到的类的源码 Paginable.java package cn.itcast.common.page; ...
- 【JMeter】【性能测试】分布式远程服务器
jmeter分布式简单步骤说明: 1:添加远程服务器IP到配置文件 在JMETER_HOME / bin / jmeter.properties中,找到名为“ remote_hosts ” 的属性,并 ...
- office excel中怎么添加批注及修改批注用户名
office excel中怎么添加批注及修改批注用户名 参考:https://jingyan.baidu.com/article/c33e3f48a52853ea15cbb5db.html 1. of ...
- MongoDB的客户端管理工具--nosqlbooster 连接MongoDB服务器
nosqlbooster的官网地址为https://nosqlbooster.com.大家如果想直接下载,可以登入下载网址https://nosqlbooster.com/downloads. 下载w ...
- 基于Kinetic框架实现超酷的风铃悬挂摆动效果
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/iefreer/article/details/37049987 在踏得网开发过程中,我们在引导页面中 ...
- 火币网API文档——WebSocket API Reference
订阅 KLine 数据 market.$symbol.kline.$period 成功建立和 WebSocket API 的连接之后,向 Server 发送如下格式的数据来订阅数据: { " ...