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 ...
随机推荐
- elasticsearch更新doc文档
在elasticsearch-head中: http://localhost:9200/my_index/products/2/ _update { "script" : { &q ...
- 006-优化web请求二-应用缓存、异步调用【Future、ListenableFuture、CompletableFuture】、ETag、WebSocket【SockJS、Stomp】
四.应用缓存 使用spring应用缓存.使用方式:使用@EnableCache注解激活Spring的缓存功能,需要创建一个CacheManager来处理缓存.如使用一个内存缓存示例 package c ...
- Python笔记:调用函数,带扩号和和不带括号的区别
调用函数,如果带括号,那么是调用函数运行后的结果, 调用函数不带括号,调用的是函数本身 例如: def cun (a,b): return a+b print(cun) : 调用函数,打印的是函数 p ...
- [vue]data数据属性及ref获取dom
data项的定义 this.$refs获取dom 获取不到数据 这样中转下才ok 小结: data里不能用this.$ref. 另外使用visjs时候 view-source:http://visjs ...
- 继承:继承后子类构造函数具有隐式super,所以子类中所以的构造函数默认会访问父类中的空参数的构造函数
class Test { Test(){ System.out.println("Test"); } Test(String name){ System.out.println(& ...
- Linux开启root用户
1.进入系统的时候Ctrl + Alt + F1,切换到命令窗口,登录现有用户: 2.执行sudo passwd root + root的密码: 3.按照要求输入密码: ==> root用户密码 ...
- DLNg[结构化ML项目]第二周迁移学习+多任务学习
1.迁移学习 比如要训练一个放射科图片识别系统,但是图片非常少,那么可以先在有大量其他图片的训练集上进行训练,比如猫狗植物等的图片,这样训练好模型之后就可以转移到放射科图片上,模型已经从其他图片中学习 ...
- js, css混淆
原理:调用yuicompressor-2.4.8.jar, 生成混淆后的文件,强大的它能处理css,js. 1,准备一个txt,列出所需要合并的js,如js.txt jquery-1.9.1.min. ...
- 阿里云香港主机自动换IP
为什么要写这个脚本原因你懂的,现在都是直接封IP pip3 install aliyun-python-sdk-alidns aliyun-python-sdk-domain aliyun-pytho ...
- SJW-遍历我的账户左侧导航页面(句柄切换)
页面信息类似如下: 定位页面元素: import time from selenium import webdriver # import os #A #username = "182007 ...