Lambda表达式
public class LambdaTest02 {
interface Printer {
void printer(String val);
}
public void pringSomething(String something, Printer printer) {
printer.printer(something);
}
public static void main(String[] args) {
LambdaTest02 lambdaTest02 = new LambdaTest02();
String some = "idsflafjg";
// 1.匿名内部类
Printer printer = new Printer() {
@Override
public void printer(String val) {
System.out.println(val);
}
};
// 2.改进
Printer printer = (String val) -> {
System.out.println(val);
};
// 3.最终形式:
// 参数类型可以省略, 程序会自动判断(根据相应接口)
// 只有一个参数时可以省略小括号(有待进一步细化研究)
// 只有一个方法时可以省略大括号
Printer printer = val -> System.out.println(val);
lambdaTest02.pringSomething(some, printer);
}
}
https://www.cnblogs.com/michael-xiang/p/13269721.html
https://www.bilibili.com/video/BV1sE411P7C1?from=search&seid=5190046306640313447&spm_id_from=333.337.0.0
田忌赛马
https://leetcode-cn.com/problems/advantage-shuffle/
class Solution {
public int[] advantageCount(int[] nums1, int[] nums2) {
int n = nums1.length;
PriorityQueue<int[]> maxpq = new PriorityQueue<>(
(int[] part1, int[] part2) -> {
return part2[1] - part1[1];
}
);
for (int i = 0; i < n; i++) {
maxpq.offer(new int[]{i, nums2[i]});
}
Arrays.sort(nums1);
int left = 0, right = n - 1;
int[] res = new int[n];
while (!maxpq.isEmpty()) {
int[] part = maxpq.poll();
int i = part[0], max = part[1];
if (nums1[right] > max) {
res[i] = nums1[right];
right--;
} else {
res[i] = nums1[left];
left++;
}
}
return res;
}
}