listlist = new arraylist<>();
list.add(1);
list.add(3);
list.add(0);
list.add(7);
list.add(2);
system.out.println("排序前:" );
iteratoriterator = list.iterator();
while (iterator.hasnext())
system.out.println();
list.sort((a,b) -> a - b);
iteratoriteratorafter = list.iterator();
system.out.println("正排序後:");
while (iteratorafter.hasnext())
list.sort((a,b) -> b - a);
system.out.println();
iteratoriteratorreafter = list.iterator();
system.out.println("反排序後:");
while (iteratorreafter.hasnext())
輸出結果:
排序前:
13072
正排序後:
01237
反排序後:
73210
在list.sort方法裡面,主要語句list.sort((a,b) -> a - b);,主要是乙個比較器,兩個值比較,則是正排序(a-b),如果返回後面後面減去前面的話,就是b-a,則是反序。
核心**,歸併演算法:
靈活的乙個計算最佳折中的原始碼,計算奇偶和除2
private static int minrunlength(int n)
return n + r;
}
原始碼
private static int countrunandmakeascending(t a, int lo, int hi,
comparator<? super t> c) else
return runhi - lo;
}
@suppresswarnings("fallthrough")
private static void binarysort(t a, int lo, int hi, int start,
comparator<? super t> c)
assert left == right;
/** the invariants still hold: pivot >= all in [lo, left) and
* pivot < all in [left, start), so pivot belongs at left. note
* that if there are elements equal to pivot, left points to the
* first slot after them -- that's why this sort is stable.
* slide elements over to make room for pivot.
*/int n = start - left; // the number of elements to move
// switch is just an optimization for arraycopy in default case
switch (n)
a[left] = pivot;
}}
jdk8新特性 lambda表示式
1 什麼是lambda表示式?lambda表示式 也叫做閉包 是jdk8中的新語法,它允許我們將函式當成引數傳遞給某個方法或者將 本身作為資料進行處理。2 lambda表示式示例 2.1 用lambda表示式實現runnable 通過匿名內部類方法重寫runnable介面 new thread ne...
JDK8 新特性 Lambda 表示式
lambda 表示式概訴 對介面進行實現呼叫 中代表著介面的入引數 中內容是介面的實現 當 中的引數有切僅有乙個時 本身可以省略 同理 當方法實現有切僅有一行時 本身也可以省略 宣告介面 public inte ce personsaymethod使用介面 public class lambdate...
JDK8新特性 Lambda表示式(上)
lambda表示式理解為簡介的表示可傳遞的匿名函式的一種方式。匿名,與普通的方法不同,沒有明確的名稱 函式,不像普通方法那樣屬於某個特定的類,但是他和方法一樣都具有引數列表 函式主體 返回型別 還有可能有丟擲異常的列表 傳遞,可以作為引數傳遞給方法或儲存在變數中 簡潔,無需像匿名類那樣寫很多的模版 ...