Java List操作
一、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操作的更多相关文章
- Java实现操作dos命令
		java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ... 
- JAVA 链表操作:循环链表
		主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ... 
- java日期操作大全
		摘自(http://www.blogjava.net/i369/articles/83483.html) java日期操作 大全 先来一个: 取得指定月份的第一天与取得指定月份的最后一天 http ... 
- Java CSV操作(导出和导入)
		Java CSV操作(导出和导入) CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ... 
- Java开发--操作MongoDB
		http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们 ... 
- hive-通过Java API操作
		通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ... 
- HDFS的Java客户端操作代码(HDFS的查看、创建)
		1.HDFS的put上传文件操作的java代码: package Hdfs; import java.io.FileInputStream; import java.io.FileNotFoundEx ... 
- Java文件操作源码大全
		Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ... 
- Java路径操作具体解释
		1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或文件夹在硬盘上真正的路径.(URL和物理路径)比如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://w ... 
- Java 文件操作大全
		Java 文件操作大全 //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPat ... 
随机推荐
- HDU 2159 FATE(二维费用背包)
			FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ... 
- 【转】const和static readonly
			我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等.在多数情况下可以混用.二者本质的区别在于,const的值是在编译期间确定的,因此只能在声 ... 
- jQuery EasyUI DataGrid Checkbox 数据设定与取值
			纯粹做个记录,以免日后忘记该怎么设定. 这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的该笔数 ... 
- 省略nslog打印
			//#if #endif宏定义的意思就是如果定义了DEBUG,那么就使用NSLog输出:否则这段代码直接忽略.有人会疑问这个DEBUG和_DEBUG来自哪里,这个其实不用担心,这个来自于Xcode的默 ... 
- Linux环境PHP7.0安装
			原文地址:http://blog.csdn.net/21aspnet/article/details/47708763 PHP7和HHVM比较 PHP7的在真实场景的性能确实已经和HHVM相当, 在一 ... 
- pdftoswf + flexpaper 图片转pdf浏览体验的实现
			需要的工具: pdftoswf:http://www.swftools.org/download.html flexpaper包,最好找个破解版的swf文件替换一下里面的swf文件.http://fi ... 
- phpcms list页实现分页
			{pc:content action="lists" catid="41" order="id ASC" num="1" ... 
- Android@Home Apple HomeKit
			Android@Home采用基于IEEE802.15.4标准的低功耗个域网协议的ZigBee技术,其是低功耗.低成本及低延迟.标准功率下可满足100米范围内的信号覆盖,并拥有三级安全模式,防止非法获取 ... 
- LMAO?
			70 weeks to finish TC problems? 2015.4.16 week1 week1~week8:Graph 1.DFS,BFS,Topological sort,Strongl ... 
- Java程序设计的基本原则
			Java程序设计的基本原则-1 1.面向对象 这是java编程里面大家公认的第一原则 2.优先使用对象组合而非类继承 3.分层 最典型的三层架构,表现层-->逻辑层-->数据层 表现层功能 ... 
