Java集合框架 基礎框架

2021-09-19 05:01:41 字數 3998 閱讀 4847

可以看到集合的基礎介面是map,collection以及iterator。其餘的類都實現自這3個類。

public inte***ce iterator

/*** 舉個簡單例子(把集合裡的元素每個都輸出出來):

* listnames = new arraylist<>();

* names.add("joemsu");

* names.add("godnessy");

* names.iterator().foreachremaining(c -> system.out.println("hi! " + c));

*/default void foreachremaining(consumer super e> action)

}

可以看到iterator介面還是很簡單的,做到了見名知意,值得一提的是裡面的remove方法:此方法可用於在迭代中刪除結合中的元素,如果不用iterator,在list迴圈中使用remove會拋異常。另外foreachremaining()給出了簡單的例子,裡面的consumer函式式介面有空再具體講解。

public inte***ce collectionextends iterable

/*** 如果滿足filter,則刪除,舉個栗子:

* collectionmyheart = new arraylist<>();

* myheart.add("boduolaoshi");

* myheart.add("godnessy");

* system.out.println("before: " + myheart.size());

* myheart.removeif(s -> s.equals("boduolaoshi"));

* system.out.println("after: " + myheart.size());

*/default boolean removeif(predicate super e> filter)

}return removed;

} default streamstream()

//採用並行處理,使用多核cpu的特性

default streamparallelstream()

}

public inte***ce map

//使用預設方法對value比較

public static > comparator> comparingbyvalue()

/*** 自己傳比較的方法,舉個栗子:

* mapmap = new hashmap<>();

* map.put("sorted", 2);

* map.put("collect", 1);

* map.put("each", 3);

* system.out.println("before sort");

* map.entryset().foreach(system.out::println);

* system.out.println("after sort");

* map.entryset()

* .stream()

* .sorted(map.entry.comparingbykey((a, b) -> a.length() - b.length()))

* .collect(collectors.tolist()).foreach(system.out::println);

*/public static comparator> comparingbykey(comparator super k> cmp)

public static comparator> comparingbyvalue(comparator super v> cmp)

} //entry end

//獲取指定key 的value,沒有則返回預設值

default v getordefault(object key, v defaultvalue)

/*** 對每隊鍵值對操作: map.foreach((i, j) -> system.out.println(i + j))

* 注意這裡的(i, j)的型別與你初始化map的鍵值型別對應,i即k, j即v

*/default void foreach(biconsumer super k, ? super v> action) catch(illegalstateexception ise)

action.accept(k, v);

}}

/*** 傳入bifunction型別,對每個鍵值對進行處理,返回型別與v型別相同

* mapmap = new hashmap<>();

* map.put("hi", 3);

* map.put("hello", 4);

* bifunctionbi = (a, b) -> a.length() + b; //為了容易理解,這麼寫

* map.foreach((i, j) -> system.out.println(i + ":" + j));

* map.replaceall(bi);

* map.foreach((i, j) -> system.out.println(i + ":" + j));

*/default void replaceall(bifunction super k, ? super v, ? extends v> function) catch(illegalstateexception ise)

// ise thrown from function is not a cme.

try catch(illegalstateexception ise)

}}

//如果為空的話,插入

default v putifabsent(k key, v value)

return v;

} default boolean remove(object key, object value)

remove(key);

return true;

} default boolean replace(k key, v oldvalue, v newvalue)

put(key, newvalue);

return true;

} default v replace(k key, v value)

return curvalue;

} default v computeifabsent(k key,

v v;

if ((v = get(key)) == null)

}return v;

} default v computeifpresent(k key,

v oldvalue;

if ((oldvalue = get(key)) != null) else

} else

} default v compute(k key,

v oldvalue = get(key);

if (newvalue == null) else

} else

} default v merge(k key, v value,

objects.requirenonnull(value);

v oldvalue = get(key);

v newvalue = (oldvalue == null) ? value :

if(newvalue == null) else

return newvalue;

}}

Java基礎 集合框架

集合框架中主要分兩大介面 list介面下兩個最常使用的實現類是 arraylist和linkedlist 1.arraylist底層是動態陣列實現的,初始化容量是10,當呼叫add 方法時判斷若是達到最大容量則擴容 1.5倍 1 新增資料時直接新增在末尾。特點是 查詢資料效率高,插入刪除效率低。2....

Java基礎 集合框架《二》

map與collection在集合框架是並列存在的。map儲存的是鍵對值。一對一對往裡存,而且要保證鍵的唯一性。map儲存元素使用的是put方法,collection使用的是add方法。map集合沒有直接取出元素的方法,而是先轉換成set集合,再通過迭代器獲取元素。map hashtable 底層是...

Java集合框架基礎 排序

排序示例 以下所有需要匯入的包,假設已經匯入 1.通過collections.sort 方法排序 public class collectionssort while integerlist.contains k integerlist.add k system.out.println 成功新增 k...