jdk1.8中新增的特性:
1.void foreach(consumer super e> action)
:jdk8中新特性,對list中每個元素分別進行操作,如:
arraylistal = new arraylist<>();
al.add(0);
al.add(1);
al.add(2);
al.add(3);
al.foreach(line -> system.out
.println(line));
2.spliteratorspliterator()
:返回乙個並行迭代器
return
new arraylistspliterator<>(this, 0, -1, 0);
示例如下:
arraylista1 = new arraylist();
a1.add("asd");
a1.add("zxc");
a1.add("xfgj");
a1.add("asd");
spliteratorspliterator = a1.spliterator();
spliterator.foreachremaining(ele -> system.out
.print(ele + " "));
結果如下:
asd zxc xfgj asd
3.boolean removeif(predicate super e> filter)
:移除集合中滿足給定條件的所有元素。filter是令元素移除成功的條件過濾器,示例如下:
arraylista1 = new arraylist();
a1.add("asd");
a1.add("zxc");
a1.add("xfgj");
a1.add("adsw");
a1.foreach(element -> system.out
.print(element + " "));
system.out
.println();
a1.removeif(element -> element.startswith("a"));// 過濾掉以"a"開頭的元素
a1.foreach(element -> system.out
.print(element + " "));
system.out
.println();
predicatepredicate = (element) -> element.contains("j"); // 這裡單獨定義了過濾器
a1.removeif(predicate); // 過濾掉包含"j"的元素
a1.foreach(line -> system.out
.println(line)); // 輸出 zxc
4.void replaceall(unaryoperatoroperator)
:替換list中的元素
objects.requirenonnull(operator);
final int expectedmodcount = modcount;
final int size = this.size;
for (int i=0; modcount == expectedmodcount && i < size; i++)
if (modcount != expectedmodcount)
modcount++;
示例如下:
arraylista1 = new arraylist();
a1.add("asd");
a1.add("zxc");
a1.add("xfgj");
a1.add("asd");
a1.replaceall(element -> element.contains("a")?"111": "000");
a1.foreach(elemet -> system.out
.print(elemet + " "));
輸出結果如下:
111 000 000 111
5.void sort(comparator super e> c)
:用於list集合排序,使用了comparator比較器來比較,實現裡面的compare方法,compareto比較之後,返回的引數是int型別,0則表示相等,1表示大於,-1負數則表示小於。
@override
@suppresswarnings("unchecked")
public
void
sort(comparator super e> c)
modcount++;
}
示例如下:
arraylist<
string
> a1 =
new arraylist<
string
>();
a1.add("asd");
a1.add("zxc");
a1.add("xfgj");
a1.add("adsw");
a1.sort(new comparator<
string
>()
});a1.foreach(line -> system.out.print(line +
" "));
JDK1 8 ArrayList擴容機制原始碼分析
屬性 預設長度 private static final int default capacity 10 空陣列 有參構造器 private static final object empty elementdata 空陣列 無參構造器 private static final object def...
JDK1 8 ArrayList 擴容詳解
arraylist這個資料結構比較簡單,總體來說,arraylist 底層結構是陣列,他的很多方法都是從陣列上面演變而來的,下面分析下arraylist的擴容機制,每次在add 乙個元素時,arraylist都需要對這個list的容量進行乙個判斷。如果容量夠,直接新增,否則需要進行擴容。在1.8 a...
JDK1 8 ArrayList原始碼分析
設定初始容量 private static final int default capacity 10 空例項陣列 private static final object empty elementdata 預設大小的空例項陣列,在第一次呼叫ensurecapacityinternal方法中的 ca...