我对存储数字对的有效方法感兴趣,并根据其中一个数字的值对它们进行排序。说我有一个数字列表:
(1, 2), (3, 5), (4, 3), (7, 8)
这些对需要以某种方式存储,然后按第二个数字的降序排序,这样这些对的顺序是
(7, 8), (3, 5), (4, 3), (1, 2)
实现此目的的Java代码是什么?我知道C ++的std::pair
,但我想知道Java中的程序。
答案 0 :(得分:1)
您可以使用Multimap
将对(1,2),(3,5),(4,3),(7,8)存储为键1,将值2存储为第一对。然后使用comparator
根据地图的值对地图进行排序。
答案 1 :(得分:1)
您可以使用TreeMap并以相反的顺序存储值。所以巴黎的第二个值将是地图的关键。
答案 2 :(得分:1)
制作class pair which implements comparable interface
并使用arraylist
和collections.sort
对其进行排序。
示例: -
public class pair implements Comparable<pair> {
int a,b;
@Override
public int compareTo(pair o) {
return(o.b-b);
}
public pair(int a,int b) {
this.a = a ;
this.b = b;
}
public String toString() {
return "("+a+","+b+")";
}
public static void main(String[] args) {
ArrayList pairs = new ArrayList();
pairs.add(new pair(4,5));
pairs.add(new pair(7,8));
pairs.add(new pair(1,3));
Collections.sort(pairs);
System.out.println("sorted: "+pairs);
}
}