一、List:、有顺序以线性方式存储,可以存放重复对象

线程安全方法:List list = Collections.synchronizedList(new LinkedList(...));

LinkedList:双向链表实现存储  索引数据慢插入数度较快  线程不安全(比安全性能好)

ArrayList:数组方式存储数据  索引数据快插入数据慢  线程不安全

Vector:数组方式存储数据  索引数据快插入数据慢  线程安全

Stack:继承自Vector,实现一个后进先出的堆栈

ArrayList:

import java.util.ArrayList;
import java.util.List; public class Main {
public static void main(String[] args) {
List books = new ArrayList();
//向books集合中添加三个元素
books.add(new String("11111111111"));
books.add(new String("22222222222"));
books.add(new String("33333333333"));
System.out.println(books); //将新字符串对象插入在第二个位置
books.add(1 , new String("44444444444"));
for (int i = 0 ; i < books.size() ; i++ )
{
System.out.println(books.get(i));
} //删除第三个元素
books.remove(2);
System.out.println(books); //判断指定元素在List集合中位置:输出1,表明位于第二位
System.out.println(books.indexOf(new String("44444444444"))); //①
//将第二个元素替换成新的字符串对象
books.set(1, new String("LittleHann"));
System.out.println(books); //将books集合的第二个元素(包括)
//到第三个元素(不包括)截取成子集合
System.out.println(books.subList(1 , 2));
}
}

Result:

[11111111111, 22222222222, 33333333333]
11111111111
44444444444
22222222222
33333333333
[11111111111, 44444444444, 33333333333]
1
[11111111111, LittleHann, 33333333333]
[LittleHann]

Stack:

import java.util.Stack;

public class Main {
public static void main(String[] args) {
Stack v = new Stack();
//依次将三个元素push入"栈"
v.push("11");
v.push("22");
v.push("33"); System.out.println(v);
//访问第一个元素,但并不将其pop出"栈"
System.out.println(v.peek());
System.out.println(v);
//pop出第一个元素
System.out.println(v.pop());
System.out.println(v);
}
}

Result:

[11, 22, 33]
33
[11, 22, 33]
33
[11, 22]

LinkedList:

import java.util.LinkedList;

public class Main {
public static void main(String[] args) {
LinkedList books = new LinkedList(); //将字符串元素加入队列的尾部(双端队列)
books.offer("11");
//将一个字符串元素加入栈的顶部(双端队列)
books.push("22");
//将字符串元素添加到队列的头(相当于栈的顶部)
books.offerFirst("33");
System.out.println(books);
//访问、并不删除栈顶的元素
System.out.println(books.peekFirst());
//访问、并不删除队列的最后一个元素
System.out.println(books.peekLast());
//将栈顶的元素弹出"栈"
System.out.println(books.pop());
//下面输出将看到队列中第一个元素被删除
System.out.println(books);
//访问、并删除队列的最后一个元素
System.out.println(books.pollLast());
//下面输出将看到队列中只剩下中间一个元素:
System.out.println(books);
}
}

Result:

[33, 22, 11]
33
11
33
[22, 11]
11
[22]

PriorityQueue:

PriorityQueue pq = new PriorityQueue();
//下面代码依次向pq中加入四个元素
pq.offer(6);
pq.offer(-3);
pq.offer(9);
pq.offer(0); //输出pq队列,并不是按元素的加入顺序排列,
//而是按元素的大小顺序排列,输出[-3, 0, 9, 6]
System.out.println(pq);
//访问队列第一个元素,其实就是队列中最小的元素:-3
System.out.println(pq.poll());

Result:

[-3, 0, 9, 6]
-3

PriorityQueue不允许插入null元素,它还需要对队列元素进行排序

ArrayDeque:

import java.util.ArrayDeque;

public class Main {

    public static void main(String[] args) {
ArrayDeque stack = new ArrayDeque();
//依次将三个元素push入"栈"
stack.push("11");
stack.push("22");
stack.push("33");
System.out.println(stack);
//访问第一个元素,但并不将其pop出"栈"
System.out.println(stack.peek());
System.out.println(stack);
//pop出第一个元素
System.out.println(stack.pop());
System.out.println(stack);
}
}

结果:

[33, 22, 11]
33
[33, 22, 11]
33
[22, 11]

List集合类应用场景:

1. java提供的List就是一个"线性表接口",ArrayList(基于数组的线性表)、LinkedList(基于链的线性表)是线性表的两种典型实现
2. Queue代表了队列,Deque代表了双端队列(既可以作为队列使用、也可以作为栈使用)
3. 因为数组以一块连续内存来保存所有的数组元素,所以数组在随机访问时性能最好。所以的内部以数组作为底层实现的集合在随机访问时性能最好。
4. 内部以链表作为底层实现的集合在执行插入、删除操作时有很好的性能
5. 进行迭代操作时,以链表作为底层实现的集合比以数组作为底层实现的集合性能好

http://www.cnblogs.com/LittleHann/p/3690187.html

http://blog.csdn.net/speedme/article/details/22398395

Java List操作的更多相关文章

  1. Java实现操作dos命令

    java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ...

  2. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

  3. java日期操作大全

    摘自(http://www.blogjava.net/i369/articles/83483.html) java日期操作 大全 先来一个:  取得指定月份的第一天与取得指定月份的最后一天  http ...

  4. Java CSV操作(导出和导入)

    Java CSV操作(导出和导入)  CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ...

  5. Java开发--操作MongoDB

    http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们 ...

  6. hive-通过Java API操作

    通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ...

  7. HDFS的Java客户端操作代码(HDFS的查看、创建)

    1.HDFS的put上传文件操作的java代码: package Hdfs; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  8. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  9. Java路径操作具体解释

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或文件夹在硬盘上真正的路径.(URL和物理路径)比如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://w ...

  10. Java 文件操作大全

    Java 文件操作大全 //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPat ...

随机推荐

  1. eclipse远程调试

    -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000Eclipse 菜单上的 Window > Preferences > ...

  2. discuz二次开发之后导航无法高亮 $mnid == $nav[navid]解决办法(转)

    在 <body>前面加入如下代码:body原来就有一个class,直接在增加一个进行测试 <!--{eval $mnid = getcurrentnav()}--> <! ...

  3. 利用SpannableString设置文本

    private void setTips(){ String big = "大字深色"; String small = "小字淡色"; Spannable ti ...

  4. GDC2016【全境封锁(Tom Clancy's The Division)】对为何对应Eye Tracked System,以及各种优点的演讲报告

    GDC2016[全境封锁(Tom Clancy's The Division)]对为何对应Eye Tracked System,以及各种优点的演讲报告 原文 4Gamer編集部:松本隆一 http:/ ...

  5. 翻译 Tri-Ace:在Shader里近似渲染公式

    继上一篇:次世代基于物理渲染的反射模型,本篇是Tri-Ace 在cedec2014上最近发布的, 主要内容如名称所示,解释了他们在实现基于物理渲染时,对shader的渲染公式所做的近似工作.     ...

  6. shell 中的引用

    1. 什么叫引用对 shell 脚本.程序.终端命令.变量.字符串等结果的反馈.2. 引用的类型 " " 双引号           ` 反引号' ' 单引号           ...

  7. Front-end Developer Interview Questions

    Front-end-Developer-Interview-Questions A list of helpful front-end related questions you can use to ...

  8. Bootstrap页面布局3 - BS布局以及流动布局

    1. <h1 class='page-header'>布局<small> 使用bootstrap网格系统布局网页</small></h1> 得到如图所示 ...

  9. window下mysql的1053错误

    tmp文件数目过多 导致启动为1053错误 这个时候有两种方法 清空tmp目录 更改mysql的tmp目录 在my.ini中更改 [mysqld] tmpdir="d:/mysql_tmp& ...

  10. vi 整行 多行 复制与粘贴

    vi编辑器中的整行(多行)复制与粘贴就非常必要了. 1.复制 1)单行复制 在命令模式下,将光标移动到将要复制的行处,按“yy”进行复制: 2)多行复制 在命令模式下,将光标移动到将要复制的首行处,按 ...