根据一个值对数字对进行排序 - Java

时间:2014-02-05 11:42:28

标签: java algorithm sorting

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

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

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

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

实现此目的的Java代码是什么?我知道C ++的std::pair,但我想知道Java中的程序。

3 个答案:

答案 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并使用arraylistcollections.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);

            }


        }