1. 程式人生 > 其它 >java高階API day2-Map介面與泛型

java高階API day2-Map介面與泛型

技術標籤:java

Map介面

Map介面專門處理鍵值對映資料的儲存,可以根據鍵實現對值的操作
Map介面最常用的實現類是HashMap

Map介面常用方法

方法名說明
Object put(Object key,Object val)以“鍵-值”對的方式進行儲存
Object get(Object key)根據鍵返回相關聯的值,如果不存在指定的鍵,返回null
Object remove(Object key)刪除由指定的鍵對映的“鍵-值”對
int size()返回元素個數
Set keySet()返回鍵的集合
Collection values()返回值的集合
boolean containsKeys(Object key)如果存在由指定的鍵對映的“鍵-值”對,返回true

遍歷Map集合
方法1:通過迭代器Iterator實現遍歷

Map<String, String> map = new HashMap<String, String>();  
Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator();  
while (entries.hasNext()) {  
    Map.Entry<String, String> entry = entries.next
(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }

方法2:增強型for迴圈

Map<String, String> map = new HashMap<String, String>();  
for (String key : map.keySet()) {  
    String value = map.get(key);  
    System.out.println("Key = "
+ key + ", Value = " + value); }

方法3:鍵值對

		//獲取鍵
        Set keys = map.keySet();
        for (Object key : keys) {
            System.out.println(key);
            System.out.println(map.get(key));
        }
        //獲取值
        Collection values = map.values();
        for (Object value : values) {
            System.out.println(value);
        }

Map介面注意事項:
  包含介面Entry<K,V>
  在HashMap中使用Node節點實現了Entry“鍵-值”對
  Node節點用next屬性實現了單向連結串列
  map底層entry+單向連結串列陣列+單向連結串列
  當元素節點個數超過8時,轉用紅黑樹進行底層儲存
  使用map.remove(Object key,Object value)方法進行刪除操作時,必須要key和value都匹配時才能刪除
  map.put(Object key,Object value)在被用作修改時,與map.replace(Object key,Object value)作用基本一致

泛型集合

通過使用泛型我們可以解決以下容易出現的異常問題:
  List的get(int index)方法獲取元素
  Map的get(Object key)方法獲取元素
  Iterator的next()方法獲取元素

泛型的定義:將物件的型別作為引數,指定到其他類或者方法上,從而保證型別轉換的安全性和穩定性(本質是引數化型別

泛型集合可以約束集合內的元素型別
  典型泛型集合ArrayList、HashMap<K,V>
    、<K,V>表示該泛型集合中的元素型別
    泛型集合中的資料不再轉換為Object

使用泛型的時候,就可以限定集合輸入的型別,從而規定了集合輸出的型別

Collections演算法類

Java集合框架將針對不同資料結構演算法的實現都儲存在工具類
Collections類定義了一系列用於操作集合的靜態方法
在這裡插入圖片描述
CollectionsCollection不同,前者是集合的操作類,後者是集合介面

Collections提供的常用靜態方法
  sort():排序
  binarySearch():查詢(使用二分法進行查詢,前提是已經排好序)
  max()\min():查詢最大\最小值

Collections 排序
  Collections類可以對集合進行排序、查詢和替換操作
  實現一個類的物件之間比較大小,該類要實現Comparable介面
    重寫**compareTo()**方法

降序和升序的操作如下程式碼:

public class Student implements Comparable<Student>{
    public int id;
    private String name;
    private String sex;
    public Student(int id,String name, String sex) {
        this.id=id;
        this.name = name;
        this.sex = sex;
    }
@Override
    public int compareTo(Student o) {
//        return this.id-o.id;//升序
        return  o.id-this.id;//降序
    }
}