第四周学习视频(一)

一、集合-Queue接口

PriorityQueue(优先队列) 是实现Queue接口的一个类。
当元素添加到PriorityQueue时,它们按优先级顺序插入。(具有最高优先级就是首先被删除的元素)


PriorityQueue常见的操作:
offer:将一个元素按优先级顺序插入到合适的位置
poll:删除优先队列中具有最高优先级的元素 (队头)
peek:获得队列中具有最高优先级的元素,不删除它
clear:删除优先队列中的全部元素。
size:获得优先队列中的元素数量。

二、集合-Set接口

Set 接口继承 Collection 接口,它不允许集合中存在重复项。
所有原始方法都是现成的(来自Collection),没有引入新方法。
具体的 Set 实现类依赖添加的对象的 equals() 方法来检查等同性。
“集合框架”支持 Set 接口两种普通的实现:HashSet、TreeSet。

三、HashSet

主要的一个无重复的集合类,元素没有顺序,没有提供同步机制,后台使用HashMap实现。

四、TreeSet

内部用TreeMap实现。
TreeSet是一个有序集合,其中元素将按照升序排列,缺省是按照自然顺序进行排列,意味着 TreeSet中元素要实现Comparable接口。
也可以在构造TreeSet对象时,传递实现了 Comparator接口的比较器对象。
非同步的。

五、HashSet和TreeSet的比较

HashSet是基于Hash算法实现的,其性能通常都优于TreeSet。
通常都应该使用HashSet,在需要排序的功能时,才使用TreeSet。
一般说来,先把元素添加到 HashSet, 再把集合转换为 TreeSet 来进行有序遍历会更快。

六、集合-Map接口

Map 接口不是 Collection 接口的继承。而是从独立的用于维护“键-值”映射的接口层次结构入手。
该接口描述了从不重复的键到值的映射。

七、Hashtable类

Hashtable实现了Map接口,实现一个 key-value映射的哈希表。
任何非空(non-null)的对象都可作为 key或者value。
Hashtable是同步的。
添加数据使用put(key, value),取出数据使用get(key)。

八、ProPerties

Hashtable的子类,只能操作字符串,保存字符串的键/值对。
使用setProperty和getProperty方法来维护表。
具有“持久性”:意味着能将Properties对象写入输出流,并能通过输入流读取。常用于维护程序配置数据或者用户首选项。

九、HashMap

HashMap和Hashtable类似,提供程序员能够使用哈希运算而不必实现哈希表机制。
它与Hashtable不同之处在于: HashMap是非同步的,并且允许null, 即null value和null key。

十、TreeMap

其中的元素可以按照Key的自然顺序排列,也可以是由Comparator指定的顺序排列。
作为Key的类需要实现Comparable接口,基本操作的时间复杂度是log(n),非同步的。

十一、集合算法

Collections类提供了各级高性能的算法 (实现成静态方法),用于操作集合元 素。
用于操作List的:Sort、binarySeatch、reverse、shuffle、 fill、copy
用于操作Collections的:Min、max、addAll、frequency、 disjoint

十二、算法--排序Sort

排序List中的元素可以使用Sort算法,它必须实现Comparable接口。
List中的元素按照compareTo方法实现的自然顺序确定的。
自然序排序:eg.Collections.sort( list );
降序排序:eg.Collections.sort( list, Collections.reverseOrder() ); reverseOrder返回一个Comparator对象,它对集合进行逆序排序。

十三、Comparable实际例子

Comparable目的是让集合内部存在一个默认的比较规则。

public class User implements Comparable<Object> { 
    ……     
    public int compareTo(Object o) {
         return …… 
    }  
    public static void main(String[] args) { 
        …… 
        Arrays.sort(users); 
        …… 
    } 
} 

十三、Comparator实际例子

Comparator是在集合外部定义比较规则。

public class UserComparator implements Comparator<Object>{ 
    public int compare(Object o1, Object o2) { 
    return …… 
    } 
} 
public class User { 
…… 
    public static void main(String[] args) { 
    …… 
    Arrays.sort(users, new UserComparator());
    …… 
    }
}

十四、Shuffle算法

用于随机排序List元素。( 用随机排序算法洗牌 )
eg. Collections.shuffle( list );

posted @ 2020-03-09 10:26  大萌神  阅读(126)  评论(0编辑  收藏  举报