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 ...
随机推荐
- LeetCode 496 Next Greater Element I 解题报告
题目要求 You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset ...
- 20165336 2017-2018-2《Java程序设计》课程总结
每周作业链接汇总 我期望的师生关系:对师生关系的看法 学习基础和C语言基础调查:关于学JAVA与C的调查 Linux安装及学习:Linux的安装 第一周学习总结:认识学习JAVA 第二周学习总结:JA ...
- 如何在安装node\npm\cnpm
1.安装node.js node.js的官方地址为:https://nodejs.org/en/download/. 根据windows版本后,选择要下载的安装包,下载完毕,按照windows一般应用 ...
- java JDBC (四)
package cn.sasa.demo4; import java.sql.Connection; import java.sql.PreparedStatement; import java.sq ...
- 虚拟机VirtualBox与CentOS 7安装
一.VirtualBox 我们电脑的操作系统一般都是Windows,如果我们要学习Linux,那么可以在我们的电脑上装个虚拟机,然后在这虚拟机上安装Linux.虚拟机可以用VirtualBox 或者 ...
- Apache SSL 服务搭建
Web服务器在默认情况下使用HTTP,这是一个纯文本的协议.正如其名称所暗示的,纯文本协议不会对传输中的数据进行任何形式的加密.而基于HTTP的Web服务器是非常容易配置,它在安全方面有重大缺陷.任何 ...
- opencv图片拼接报错cv::Stitcher::ERR_NEED_MORE_IMGS (1)
#include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include "o ...
- oracle sqlplus login.sql设置
sqlplus在启动时会自动运行两个脚本:glogin.sql.login.sql这两个文件 执行顺序为 1.默认在在$ORACLE_HOME/sqlplus/admin路径下查找glogin.sql ...
- 前端用Json传输数据给后台,用postman测试
postman发送json格式的post请求 在地址栏里输入请求url:http://127.0.0.1:8081/getmoney 选择“POST”方式, 在“headers”添加key:Con ...
- MySQL大表DROP删除小技巧(转)
在日常工作中,经常会遇到历史大表从主库上迁移到备份机,以便腾出主库空间,那么如果你直接drop table 后,可能会引起数据库抖动,连接数升高等问题,从而影响业务. 那么用一个小技巧,即可轻松平滑的 ...