AbstractCompare<int>* cmp = get_compare_int(type)
时间: 2024-05-28 10:10:27 浏览: 8
这行代码的作用是定义了一个指向 AbstractCompare 类型的指针 cmp,并调用了函数 get_compare_int(type) 来初始化它。函数 get_compare_int(type) 返回一个针对 int 类型的比较器,它是 AbstractCompare<int> 类的子类,因此可以用作 cmp 的值。这种设计可以使得代码更加灵活,可以在运行时动态地决定使用哪种比较器。
相关问题
Java 对 List<List<Integer>> 自定义规则排序
要对 `List<List<Integer>>` 进行自定义规则排序,可以使用 `Comparator` 接口来实现。
假设我们要按照列表中第一个元素的大小进行排序,如果第一个元素相同,则按照第二个元素的大小进行排序,以此类推。
可以使用如下代码来实现:
```java
List<List<Integer>> list = new ArrayList<>();
// 假设已经将列表添加到 list 中
// 按照列表中第一个元素的大小进行排序,如果第一个元素相同,则按照第二个元素的大小进行排序,以此类推
Collections.sort(list, new Comparator<List<Integer>>() {
@Override
public int compare(List<Integer> o1, List<Integer> o2) {
for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
int cmp = o1.get(i).compareTo(o2.get(i));
if (cmp != 0) {
return cmp;
}
}
return Integer.compare(o1.size(), o2.size());
}
});
```
这段代码使用了匿名内部类来实现 `Comparator` 接口,并重写了 `compare` 方法来定义排序规则。在 `compare` 方法中,首先遍历两个列表中的元素,按照顺序进行比较,如果发现两个元素不相同,则返回它们之间的比较结果。如果遍历完两个列表后,发现它们的长度不同,则返回它们长度之间的比较结果。最终,使用 `Collections.sort()` 方法对列表进行排序。
将下面的c语言代码转化为java代码:#include <iostream> #include <cstring> #include<cmath> #include<stdio.h> #include<map> using namespace std; //词典结构 struct S { char des[15]; //目标语言 char src[15]; //英语 }dic[100010]; //定义比较器,目标语言字典序升序排列 int cmp(const void *a, const voi
Java代码如下:
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
//词典结构
static class S {
String des; //目标语言
String src; //英语
}
static S[] dic = new S[100010];
//定义比较器,目标语言字典序升序排列
static class MyComparator implements Comparator<S> {
public int compare(S s1, S s2) {
return s1.des.compareTo(s2.des);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, String> map = new HashMap<String, String>();
int cnt = 0;
while (scanner.hasNext()) {
String src = scanner.next();
String des = scanner.next();
dic[cnt] = new S();
dic[cnt].des = des;
dic[cnt].src = src;
cnt++;
}
scanner.close();
//按目标语言字典序升序排列
Arrays.sort(dic, 0, cnt, new MyComparator());
//构建映射表
for (int i = 0; i < cnt; i++) {
map.put(dic[i].des, dic[i].src);
}
//查询并输出翻译结果
while (scanner.hasNext()) {
String word = scanner.next();
if (map.containsKey(word)) {
System.out.println(map.get(word));
} else {
System.out.println("eh");
}
}
}
}
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)