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)); } }
时间: 2024-02-14 13:06:06 浏览: 94
这段代码实现了对一个 Integer 类型的数组进行降序排序,并使用了匿名内部类实现了 Comparator 接口中的 compare 方法。具体来说,compare 方法会比较两个 Integer 对象 i1 和 i2 的大小,如果 i2 大于 i1,则返回正数,如果 i2 等于 i1,则返回 0,如果 i2 小于 i1,则返回负数。在 sort 方法中,根据 compare 方法的返回值将数组中的元素进行排序。最终输出排序后的数组。
相关问题
举一反三 请观察如下代码,其实现的效果是将数组中的元素按照从大到小的顺序排序: 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表达式的函数体。这样就实现了相同的需求,将数组中的元素按照从大到小的顺序进行排序。
逐句解析代码 package com.io.mytest; import java.io.*; import java.util.*; public class test4 { /* 出师表排序 */ public static void main(String[] args) throws IOException { //1.读取数据 BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\linliyou\\Downloads\\csb.txt")); String line; TreeMap<Integer,String> tm = new TreeMap<>(); while ((line = br.readLine()) != null){ String[] arr = line.split("\\."); tm.put(Integer.parseInt(arr[0]),line); } br.close(); //2.写出数据 BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\idea codes\\basic-codes\\result.txt")); Set<Map.Entry<Integer,String>> entries = tm.entrySet(); for (Map.Entry<Integer, String> entry : entries) { String value = entry.getValue(); bw.write(value); bw.newLine(); } bw.close(); } }
这段代码是一个简单的Java程序,主要实现了读取一个文件中的数据并按照一定规则进行排序后写入另一个文件。
代码首先导入了需要的类,包括java.io和java.util。然后定义了一个名为test4的类。
在main方法中,首先创建了一个BufferedReader对象br,用于读取文件。通过new FileReader("C:\\Users\\linliyou\\Downloads\\csb.txt")指定要读取的文件路径,并将其传递给BufferedReader的构造函数。接下来创建了一个TreeMap对象tm,用于存储排序后的数据。
代码通过while循环读取文件中的每一行数据,将每一行根据"."进行切割,得到序号和内容两部分。使用Integer.parseInt方法将序号转换为整数,并将序号和整行内容存入TreeMap中。最后通过br.close()关闭文件读取流。
接下来创建了一个BufferedWriter对象bw,用于写入文件。通过new FileWriter("C:\\idea codes\\basic-codes\\result.txt")指定要写入的文件路径,并将其传递给BufferedWriter的构造函数。
通过Set<Map.Entry<Integer,String>> entries = tm.entrySet()获取TreeMap中的键值对集合。然后使用增强型for循环遍历集合中的每一个键值对,获取值并使用bw.write(value)写入文件。最后通过bw.close()关闭文件写入流。
这段代码的功能是读取csb.txt文件中的数据,并按照序号进行排序后写入result.txt文件。
阅读全文