public class Test { public static void main(String[] args) { Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7}; Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer i1, Integer i2) { return i2.compareTo(i1); } }); System.out.println(Arrays.toString(arr)); } }请使用Lambda表达式,改写以上代码,实现相同的需求。
时间: 2024-02-02 09:04:18 浏览: 34
可以使用 Lambda 表达式来简化上述代码。Lambda 表达式是一个匿名函数,可以直接传递给方法或赋值给变量。这里可以使用 Lambda 表达式来替代匿名内部类,代码如下:
```
public class Test {
public static void main(String[] args) {
Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7};
Arrays.sort(arr, (i1, i2) -> i2.compareTo(i1));
System.out.println(Arrays.toString(arr));
}
}
```
Lambda 表达式 `(i1, i2) -> i2.compareTo(i1)` 的意思与匿名内部类中的 `compare` 方法相同。其中的 `->` 符号表示 Lambda 表达式的参数和执行体的分隔符,左侧是参数列表,右侧是执行体。因为只有一行代码,所以不需要写花括号。
相关问题
举一反三 请观察如下代码,其实现的效果是将数组中的元素按照从大到小的顺序排序: public class Test { public static void main(String[] args) { Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7}; Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer i1, Integer i2) { return i2.compareTo(i1); } }); System.out.println(Arrays.toString(arr)); } } 请使用Lambda表达式,改写以上代码,实现相同的需求。
可以使用Lambda表达式来简化以上代码的实现。根据给出的代码,可以将其改写为:
public class Test {
public static void main(String[] args) {
Integer[] arr = {2, 4, 6, 1, 9, 3, 0, 7};
Arrays.sort(arr, (i1, i2) -> i2.compareTo(i1));
System.out.println(Arrays.toString(arr));
}
}
通过使用Lambda表达式,我们可以将匿名内部类的实现直接用箭头符号"->"表示。在这个例子中,比较方法的逻辑仍然是i2.compareTo(i1),只是将其放在箭头符号后面作为Lambda表达式的函数体。这样就实现了相同的需求,将数组中的元素按照从大到小的顺序进行排序。
String[] arr1 = new String[]{"003test1001", "反面孔"}; String[] arr2 = new String[]{"003test1001", "反面孔"}; String[] arr3 = new String[]{"003test1001", "反面孔"}; String[] arr4 = new String[]{"003test1002", "反面孔"}; String[] arr5 = new String[]{"003test1002", "正面孔"}; String[] arr6 = new String[]{"003test1003", "正面孔"}; 怎么用Java写一个汇总相同值
可以使用 HashMap 来实现汇总相同值的功能。具体步骤如下:
1. 创建一个 HashMap,用于存储相同值的计数。
2. 遍历数组,将数组元素作为键,计数为值存入 HashMap 中。
3. 遍历 HashMap,输出计数大于 1 的键和对应的值,即为相同值的汇总结果。
Java 代码实现如下:
```java
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
String[] arr1 = new String[]{"003test1001", "反面孔"};
String[] arr2 = new String[]{"003test1001", "反面孔"};
String[] arr3 = new String[]{"003test1001", "反面孔"};
String[] arr4 = new String[]{"003test1002", "反面孔"};
String[] arr5 = new String[]{"003test1002", "正面孔"};
String[] arr6 = new String[]{"003test1003", "正面孔"};
// 创建 HashMap
HashMap<String, Integer> map = new HashMap<>();
// 遍历数组,将元素作为键,计数为值存入 HashMap 中
String[][] arrays = {arr1, arr2, arr3, arr4, arr5, arr6};
for (String[] array : arrays) {
String key = array[0] + "-" + array[1]; // 组合键
if (map.containsKey(key)) {
map.put(key, map.get(key) + 1); // 计数加 1
} else {
map.put(key, 1); // 初始化计数为 1
}
}
// 遍历 HashMap,输出计数大于 1 的键和对应的值
for (String key : map.keySet()) {
int count = map.get(key);
if (count > 1) {
String[] array = key.split("-"); // 拆分键
System.out.println("相同值:" + array[0] + "," + array[1] + ",出现次数:" + count);
}
}
}
}
```
输出结果如下:
```
相同值:003test1001,反面孔,出现次数:3
相同值:003test1002,出现次数:2
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)