1、java的集合结构:(java.util包中)
Collection
|--List
|--ArrayList
|--LinkedList
|--vector
|--stack
|--Set
|--EnumSet
|--TreeSet
|--HashSet(类似于HashMap)
Map
|--HashMap
|--Hashtable
2、具体区别:
(1)ArrayList和LinkedList的区别:
LinkedList实现了List接口,类似于双向链表,允许null元素。提供了get,remove,insert等方法。
LinkedList没有同步方法,如果多个线程同时访问LinkedList需要自己实现同步方法。
一种实现同步方法:
List list = Conllections.synchronizedList(new LinkedList<String>());
ArrayList实现了List接口,类似于大小可变的数组。ArrayList也是非同步的。
Vector类
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建
的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线
程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出
ConcurrentModificationException,因此必须捕获该异常。
Stack 类
Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆
栈使用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方
法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。
(2)List和Set的区别:
A、List允许多次插入null值,Set只允许插入一次null;
set的add()方法是:public boolean add(E e),只有当set中不存在当前值时,才会插入成功;
List的add()方法无此要求,可以允许重复插入;
B、List可以使用list.get(int index)方法访问,Set是无序的,只能通过Iterator迭代访问;
List是有序的Collection,可以精确的控制每个元素,可以使用每个元素的索引(元素在List中的下标,类似于数组的下标):
List<Integer> list = new ArrayList<Integer>();
list.add(new Integer(1));
list.add(new Integer(1));
list.add(new Integer(2));
System.out.println(list.get(2));//下标从0开始,輸出為2
List也实现了Iterator接口,也可以通过Iterator迭代:
List<Integer> list = new ArrayList<Integer>();
list.add(new Integer(1));
list.add(new Integer(1));
list.add(new Integer(2));
Iterator<Integer> ite = list.iterator();
while(ite.hasNext()){
ite.next();
}
List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一 些add()之类的方法,允许添加, 删除,设定元素,还能向前或向后遍历。
ListIterator<Integer> ite2 = list.listIterator();//listIterator()方法,返回一个ListIterator接口
//ite2.previousIndex();//前一个索引值
//ite2.nextIndex();//后一个索引值
//ite2.previous();//前一个元素
//ite2.next();
//ite2.add(new Integer(3));//将指定的元素插入列表,插入到当前元素的后面
//ite2.next();//后一个元素
//ite2.set(new Integer(4));//用指定元素替换 next 或 previous 返回的最后一个元素
Iterator<Integer> ite = list.iterator();
while(ite.hasNext()){
System.out.println(ite.next());//3,1,1,2
}
(3)List和Map的区别:
Map没有实现Collection接口,是以Key-Value形式存在的。
(4)Hashtable 和HashMap的区别:
都是以key-value的形式储存数据的。
Hashtable 不允许null作为key或value,是线程安全的;
HashMap 允许null作为key或者value,是非线程安全的;
Map<Object, Object> table = new Hashtable<Object, Object>();
table.put(null, null);
会报java.lang.NullPointerException异常,换成HashMap则正常;
3、Collections和Collection的区别:
Collections.reverse(list); //list中元素顺序反转
Collections.sort(list);//按大小排序
Collections.synchronizedList(list);//该list加同步的方法
4、总结:
1)如果涉及到堆栈、队列等操作,应该使用List。对于快速插入、删除元素,应该使用LinkedList;而如果希望快速的随机访问元素,使用ArrayList。
2)建议使用一个简单的数组(Array)来代替Vector或ArrayList。尤其是对于执行效率要求高的程序更应如此。因为使用数组(Array)避免了同步、额外的方法调用和不必要的重新分配空间的操作。
分享到:
相关推荐
java Collection类整理
Java集合可以分为Collection和Map两种体系: Collection接口: List:元素有序,可重复的集合 ArrayList: 底层数组实现,有利于随机访问get LinkedList:底层是链表,有利于频繁的插入、删除操作(ArrayList删除和...
Java集合collection详解[整理].pdf
java核心知识点整理,面试很有用 Java核心知识点2.JVM JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它...
Java集合可以分为Collection和Map两种体系: Collection接口: List:元素有序,可重复的集合 ArrayList: 底层数组实现,有利于随机访问get LinkedList:底层是链表,有利于频繁的插入、删除操作(ArrayList删除和...
* List和Set都是继承自Collection接口,List是有序可重复的,Set是无序不可重复的。 * Set放入元素的位置是根据其hashCode决定的,把一个Object放入一个Set前,必须都equals()方法进行定义。 * List可以用for循环...
自己学习总结的java常用集合知识
19.Collection 和 Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和 Hashtable 有什么区别? 22.如何决定使用 HashMap 还是 TreeMap? 23.说一下 HashMap 的实现原理? 24.说一下 ...
整理的java面试有关资源:如 1、 多线程有几种实现方法?同步有几种实现方法? 2、 JDBC 中的 PreparedStatement 相比 Statement 的好处? 3、 Java 中实现多态的机制是什么? 4、 说出 ArrayList,Vector, LinkedList ...
《java程序设计》课程的题库资料,由贺州学院整理,可供学生期末课程复习使用,也可以供相关任课教师出卷使用。 内容示例为: 40. __________包包含了Collection的接口的类的API。 答案:Java.util 41. Math.round...
Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,private,以及不写时的区别? 9 3. 编程输出如下图形。 9 4. JAVA的事件委托机制和垃圾回收机制 10 5. 在JAVA中,如何跳出...
我对这部分知识做了一个系统的整理,方便学习查阅。 本项目已开通 Discussions 功能。学习之前,先来看看 的技术面试官是怎么说的吧。本项目欢迎各位开发者朋友到 分享自己的一些想法和实践经验。也不妨 Star 关注 ...
要掌握Collection相关的接口和类的使用 56.使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的destroy()方法有什么后果? 58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法...
最新整理的集合全集 对map 和 collection 下的类进行了详细的整理。
Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,private,以及不写时的区别? 9 3. 编程输出如下图形。 9 4. JAVA的事件委托机制和垃圾回收机制 10 5. 在JAVA中,如何跳出...
Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。本文是动力节点java学院给大家整理的java map知识,需要的的朋友参考下吧
参加比赛前培训的JAVA算法题目集合,学校内部老师整理而来,在校学习之必备良方!
Java集合主体内容包括Collection集合和Map类;而Collection集合又可以划分为List(队列)和Set(集合),有需要的小伙伴可以参考下
{4}Collection}{80}{chapter.4} {4.1}\ttfamily java.util.ArrayList}{80}{section.4.1} {4.2}\ttfamily java.util.LinkedList}{81}{section.4.2} {4.3}贪吃蛇案例}{82}{section.4.3} {4.4}散列表与HashMap}{83...