可以看到集合的基礎介面是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...