Java集合之List集合
来源:互联网 发布:js登陆界面 编辑:程序博客网 时间:2024/05/18 13:26
一、List集合的特点及常见用法
(1)元素有序,可重复,每个元素有其对应的索引(从0开始)
(2)List判断2元素相等只需equals()返回true
import java.util.ArrayList;import java.util.List;public class ListTest {public static void main(String[] args) {// TODO 自动生成的方法存根List books=new ArrayList();books.add(new String("java"));books.add(new String("hahahaha"));books.add(new String("hello"));books.add(new String("666"));System.out.println(books);books.add(1,new String("插入到第二个位置"));for(int i=0;i<books.size();i++){System.out.print(books.get(i)+",");}System.out.println("hahahaha元素的位置"+books.indexOf(new String("hahahaha")));books.set(1, new String("替换元素"));//此方法不会改变list的长度System.out.println(books);books.sort((o1,o2)->((String)o1).length()-((String)o2).length());System.out.println("排序"+books);}}
(3)List还提供了一个listIterator()方法遍历
import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class ListIteratorTest {public static void main(String[] args) {// TODO 自动生成的方法存根String[] books={"Android","java","c++","ios"};List booklist=new ArrayList();for(int i=0;i<books.length;i++){booklist.add(books[i]);}ListIterator listIterator=booklist.listIterator();while (listIterator.hasNext()) {System.out.println(listIterator.next());}System.out.println("反向迭代");while(listIterator.hasPrevious()){System.out.println(listIterator.previous());}}}
二、ArrayList和Vector
(1)都是基于数组实现的,封装了一个动态的、允许再分配的Object[]数组
(2)自动增加长度(initialCapacity参数),初始化时没有指定默认10
(3)他们两个用法几乎完全相同(vector比较古老,性能较差,尽量少用)
(4)ArrayList线程不安全,Vector线程安全(但是也不建议使用Vector,可以使用Collections工具类将ArrayList线程变得安全)
(5)Vector提供了stack用来模拟栈这种数据结构(但是也不推荐使用,可以用ArrayDeque)
三、Queue集合
(1)模拟队列结构(FIFO)
(2)PriorityQueue实现类会将队列元素从小到大排序(与TreeSet类似也可以自然排序,定制排序)
import java.util.PriorityQueue;public class PriorityQueueTest {public static void main(String[] args) {// TODO 自动生成的方法存根PriorityQueue priorityQueue=new PriorityQueue();priorityQueue.add(1);priorityQueue.add(3);priorityQueue.add(-8);priorityQueue.add(-1);System.out.println(priorityQueue);}}
(3)Deque接口和ArrayDeque实现类(双端队列,可从两端操纵队列,实现了栈和队列)
import java.util.ArrayDeque;public class ArrayDequetest {public static void main(String[] args) {// TODO 自动生成的方法存根//模拟栈ArrayDeque stack=new ArrayDeque();stack.push("java");stack.push("android");System.out.println(stack);//读取第一个元素但是并不pop()System.out.println(stack.peek());//popSystem.out.println(stack.pop());System.out.println(stack);//模拟队列ArrayDeque queue=new ArrayDeque();queue.offer("haha");queue.offer("2333");queue.offer("666");System.out.println(queue);System.out.println(queue.peek());System.out.println(queue.poll());System.out.println(queue);}}
四、LinkedList
(1)既是list,也继承了Deque接口
(2)很强大,但是使用了链表结构,因此随机访问性能较差,插入删除性能较强
五、线性表性能分析
(1)一般来说数组一连续的内存存储元素,所以随机访问时性能最好,而链表插入删除性能较强。总体是ArrayList性能比LinkedList好。
(2)如果遍历集合元素,对于ArrayList和Vector应使用随机访问方法(get),对于LinkedList应使用迭代器(Iterator)。
(3)如要经常插入删除包含大量数据的list集合的大小,应用LinkedList。
(4)多线程时应用Collections将集合包装成线程安全的集合)
1 0
- Java集合之List集合
- JAVA集合之List
- Java集合之List
- Java集合之List
- Java集合之List
- java集合之List
- java 集合之List
- Java集合之List
- Java之List集合
- Java之集合List
- Java集合之List
- Java集合之List
- JAVA集合-List集合
- Java集合----List集合
- 四大名捕-----JAVA集合之List
- java之List,Set集合
- java集合框架之list
- java集合类之List
- LaTeX局部改变字体类型
- 微博登录过程分析以及scrapy模拟登录微博
- 欢迎使用CSDN-markdown编辑器
- 汽车4S展示系统(二)
- 树(上)之二叉树
- Java集合之List集合
- Lintcode 螺旋矩阵 II
- 解决listView.setAdapter()出现空指针异常
- HTML–学习笔记第三天
- Java 匹配字符串并按匹配度高低排序输出
- Spark:Spark 编程模型及快速入门
- 查找算法
- 异常
- C#使用Ado.Net读写数据库