集合 区别

快来打我* 2022-07-14 00:11 526阅读 0赞

map.bmp













































 

有序否

允许元素重复否

Collection

List

Set

AbstractSet

HashSet

TreeSet

是(用二叉树排序)

Map

AbstractMap

使用key-value来映射和存储数据,Key必须惟一,value可以重复

HashMap

TreeMap

是(用二叉树排序)

几个面试常见问题:
1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
A:Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。

2.Q:大致讲解java集合的体系结构
A:List、Set、Map是这个集合体系中最主要的三个接口。
其中List和Set继承自Collection接口。
Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。
List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。
Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。
SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。

3.Q:Comparable和Comparator区别
A:调用java.util.Collections.sort(List list)方法来进行排序的时候,List内的Object都必须实现了Comparable接口。
java.util.Collections.sort(List list,Comparator c),可以临时声明一个Comparator 来实现排序。
Collections.sort(imageList, new Comparator() {
public int compare(Object a, Object b) {
int orderA = Integer.parseInt( ( (Image) a).getSequence());
int orderB = Integer.parseInt( ( (Image) b).getSequence());
return orderA - orderB;
}
});
如果需要改变排列顺序
改成return orderb - orderA 即可。

4.Q:简述equals()和hashCode()
hascode 相同 equals吧一定相同
equals相同hascode一定相同
equals不同hascode不一定不同

http://blog.csdn.net/chy800/article/details/7239838

public interface
Collection
extends Iterable

public interface
List
extends Collection

public abstract class
AbstractList
extends AbstractCollection
implements List

public class
Vector
extends AbstractList
implements List,
RandomAccess,
java.lang.Cloneable,
java.io.Serializable
**基于Array
是“sychronized”的

public class
ArrayList
extends AbstractList
implements List,
RandomAccess,
Cloneable,
java.io.Serializable
基于Array**
ArrayList是非同步的。所以在性能上要比Vector优越一些

public class
LinkedList
extends AbstractSequentialList
implements List,
Queue,
Cloneable,
java.io.Serializable
不基于Array

**基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作

List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别
public abstract class AbstractSet
extends AbstractCollection
implements Set**

public class HashSet
extends AbstractSet
implements Set, Cloneable, java.io.Serializable
HashSet的存储方式是把HashMap中的Key作为Set的对应存储项

public class LinkedHashSet
extends HashSet
implements Set, Cloneable, java.io.Serializable

public class TreeSet
extends AbstractSet
implements SortedSet, Cloneable, java.io.Serializable
它是通过SortedMap来实现的

public interface Map

public abstract class AbstractMap
implements Map

public class HashMap
extends AbstractMap
implements Map, Cloneable, Serializable

public class TreeMap
extends AbstractMap
implements SortedMap, Cloneable, java.io.Serializable

HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)

发表评论

表情:
评论列表 (有 0 条评论,526人围观)

还没有评论,来说两句吧...

相关阅读

    相关 集合的基本区别

    1. arraylist:   有序,可以重复,查询效率高,插入效率低。线程不安全,底层是数组。 2. linkedList:  有序,可以重复,查询效率低,插入效率高,线

    相关 数组和集合区别

    集合和容器都是Java中的容器。 区别 数组特点:大小固定,只能存储相同数据类型的数据 集合特点:大小可动态扩展,可以存储各种类型的数据     转换 数组转换为