02-数据类型学习(二)

2020-03-21  本文已影响0人  fly林十一

1.Collection接口

Coollection是所有单列集合的根接口

1.List接口

特点:

1.有序的;
2.可以存储重复元素;
3.可以通过索引访问元素。
  1. ArrayList(子类):数组结构,无任何特有方法。

  2. LinkedList(子类):链表结构

  3. Vector:Object 数组

Arraylist 与 LinkedList 区别

ArrayList 与 Vector

Vector类的所有方法都是同步的。可以由两个线程安全地访问一个 Vector 对象、但是一个线程访问 Vector 的话代码要在同步操作上耗费大量的时间。

Arraylist不是同步的,所以在不需要保证线程安全时建议使用 Arraylist。

2.Set接口

特点:

1.无序的;
2.不能重复存储元素;
3.不能通过索引访问元素。

2.map

Map: 使用键值对存储。Map 会维护与 Key 有关联的值。两个 Key 可以引用相同的对象,但 Key 不能重复,典型的 Key 是 String 类型,但也可以是任何对象。

HashMap 和 Hashtable 的区别

  1. 线程是否安全: HashMap 是非线程安全的,HashTable 是线程安全的;HashTable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!);
  2. 效率: 因为线程安全的问题,HashMap 要比 HashTable 效率高一点。另外,HashTable 基本被淘汰,不要在代码中使用它;
  3. 对 Null key 和 Null value 的支持: HashMap 中,null 可以作为键,这样的键只有一个,可以有一个或多个键所对应的值为 null。。但是在 HashTable 中 put 进的键值只要有一个 null,直接抛出 NullPointerException。
  4. 初始容量大小和每次扩充容量大小的不同 : ①创建时如果不指定容量初始值,Hashtable 默认的初始大小为 11,之后每次扩充,容量变为原来的 2n+1。HashMap 默认的初始化大小为 16。之后每次扩充,容量变为原来的 2 倍。②创建时如果给定了容量初始值,那么 Hashtable 会直接使用你给定的大小,而 HashMap 会将其扩充为 2 的幂次方大小(HashMap 中的tableSizeFor()方法保证,下面给出了源代码)。也就是说 HashMap 总是使用 2 的幂作为哈希表的大小, 后面会介绍到为什么是 2 的幂次方。
  5. 底层数据结构: JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树,以减少搜索时间。Hashtable 没有这样的机制。

HashMap 和 HashSet 区别

如果你看过 HashSet 源码的话就应该知道:HashSet 底层就是基于 HashMap 实现的。(HashSet 的源码非常非常少,因为除了 clone()、writeObject()、readObject()是 HashSet 自己不得不实现之外,其他方法都是直接调用 HashMap 中的方法。

3.Collections类

1.public static void shuffle(List<?> list) :打乱集合顺序。
2.public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。
3.public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排序。

java.util.Collections(工具类):

  1. shuffle():打乱顺序;

  2. sort(List list):对集合元素排序-->依赖于元素必须实现Comparable接口,并重写compareTo()方法。

    当Collections的sort()方法内部调用对象的compareTo()方法
    进行排序的依据:
    1.如果compareTo()方法返回负数:当前对象小于参数对象
    2.如果为0:当前对象和参数对象相等;
    3.如果为正数:当前对象大于参数对象

  3. sort(List list,Comparator cp):对集合元素排序-->不需要元素实现Comparable接口。但需要传入一个Comparator的实现类对象,作为“比较器”。

上一篇下一篇

猜你喜欢

热点阅读