执行以下任务的 Java 程序是什么?
给定两个名为a
and 的数组c
。我需要a
对c
.
例如,如果a={2,3,4}
和c={-1,2,1}
。排序 a 关于 c 将产生{2,4,3}
我在 C++ 中使用pair<>
. 如何使用内置功能在 Java 中做同样的事情?
你可以在 Java 中做同样的事情:
class Pair<A, C extends Comparable<C>> implements Comparable<Pair<A,C>> {
public final A a;
public final C c;
Pair(A a, C c) {
this.a = a;
this.c = c;
}
@Override
public int compareTo(Pair<A, C> o) {
return c.compareTo(o.c);
}
}
...
public static void main(String[] args) {
List<Pair<Integer,Integer>> list = new ArrayList<>();
list.add(new Pair<>(2,-1));
list.add(new Pair<>(3,2));
list.add(new Pair<>(4,1));
Collections.sort(list);
list.stream().forEach((pair) -> {
System.out.println(pair.a + " " + pair.c);
});
}
更新:
或者,更简单地说:
class Pair<A, C> {
public final A a;
public final C c;
Pair(A a, C c) {
this.a = a;
this.c = c;
}
}
public static void main(String[] args) {
List<Pair<Integer,Integer>> list = new ArrayList<>();
list.add(new Pair<>(2,-1));
list.add(new Pair<>(3,2));
list.add(new Pair<>(4,1));
Collections.sort(list,
(Pair<Integer, Integer> o1, Pair<Integer, Integer> o2) -> o1.c.compareTo(o2.c));
list.stream().forEach((pair) -> {
System.out.println(pair.a + " " + pair.c);
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句