1. 程式人生 > >set集合與map集合以及list的優化

set集合與map集合以及list的優化

  1. Set

    1.1 特點:無序、物件不能重複(eqauls)
    eqauls從Object繼承,預設比較的記憶體地址
    1.2 遍歷
    1.2.1 foreach
    1.2.2 迭代器
    1.3 常用實現類
    HashSet
    TreeSet:根據某種(規則)對裡面的元素進行排序
    規則1: java.lang.Comparable
    規則2: java.util.Comparator

  2. Map
    4.1 特點:無序、以鍵值對的形式新增元素,鍵不能重複,值可以重複,如果鍵相同,值會覆蓋
    它沒有繼承Collection介面
    4.2 遍歷
    3.2.1 先取出儲存所有鍵的Set,再遍歷Set即可
    3.2.2 先取出儲存所有Entry重點內容的Set,再遍歷此Set即可(快速遍歷Map)

set程式碼塊

public class Set {

    public static void main(String[] args) {

        java.util.Set<Stu> set= new HashSet<>();

        set.add(new Stu("15", "zah", 17));
        set.add(new Stu("18", "hfgs", 145));
        set.add(new Stu("78", "khkh", 19));
        set.add(new Stu("123"
, "khjde", 141));
set.add(new Stu("65", "ljkh", 147)); set.add(new Stu("32", "aads", 20)); set.add(new Stu("32", "aads", 20)); System.out.println(set.size());
/**
     * set不是所有的型別都是無序的Sting和integer是有序的,但是自己定義的實體類是無序的
     * 
     * 關於set集合的排序分兩點:
     * 1.jdk1.7及以下HashSet是無序的,而linkedHashSet是怎麼存怎麼取,TreeSet有預設的排序(自然排序介面,比較器排序介面)。
     * 2.jdk1.8及以上HashSet和TreeSet都是有序的。HashSet的排序方式是雜湊排序,TreeSet它的排序是(自然排序介面,比較器排序介面)
     * 
     */

list集合的優化

public class Collection2 {


    //list的優化
    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
        ArrayList list=new ArrayList<>(50);

        getLen(list);
        for (int i = 0; i < 60; i++) {
            list.add(i);
            System.out.print(list.size()+",");
            getLen(list);

        }
        String [] arr=new String[10];

    }


      //結論:初始容量為10    每次增加陣列的長度為1.5倍。
    //優化只需要給list一個指定的長度就行了這樣可以減少擴容的時間。