关于算法:根据一个值对数字对进行排序 – Java

Sorting pairs of numbers according to one value - Java

我感兴趣的是一种有效的方法来存储成对的数字,并根据其中一个数字的值对它们进行排序。假设我有一个数字列表:

1
(1, 2), (3, 5), (4, 3), (7, 8)

这些对需要以某种方式存储,然后按第二个数字的降序排序,这样这些对的顺序就是

1
(7, 8), (3, 5), (4, 3), (1, 2)

要实现这个目标,Java代码是什么?我知道C++的EDOCX1 0,但是我想知道Java中的过程。


制作一个class pair which implements comparable interface,用arraylistcollections.sort进行排序。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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);

            }


        }


您可以使用treemap并以相反的顺序存储值。所以巴黎的第二个价值观将是地图的关键。


可以使用Multimap存储对(1、2)、(3、5)、(4、3)、(7、8)作为第一对的键1和值2,然后使用comparator根据映射的值对映射进行排序。