按升序和降序对Array的LinkedHashmap进行排序 - Java

时间:2015-11-24 17:33:56

标签: java arrays sorting linkedhashmap

如何对int数组的LinkedHashMap进行排序,让数组中的第一个元素按降序排序,第二个元素按升序排序?

e.g。

No.   Vol.  Rank     becomes      No.   Vol.  Rank      
1     4     2                     3     5     1
2     4     1                     1     4     2
3     5     1                     2     4     1
4     2     5                     4     2     5

其中,No是关键,Vol。和Rank是LinkedHashMap包含的int数组中的元素

1 个答案:

答案 0 :(得分:0)

询问如何对Map进行排序没有多大意义。有意义的是询问如何以特定顺序在地图中显示数据。

假设您的数据组织如下:

Map<Integer,int[]> data;

您可以使用以下任意顺序检索条目:

data.entrySet().stream()
    .sorted(Map.Entry.comparingByValue(Comparator.comparingInt(a -> a[0])))
    ...

这基本上流式传输地图条目,并根据通过lambda表达式提取的整数对它们进行排序。您对数据的处理取决于您的需求,但您可以过滤,收集到条目列表或键列表等。

最后一点,这不是一个很好的数据结构。我建议你不要在数组中存储不同的数据域(vol和rank)。最好创建一个类,然后将数据存储为对象列表。您可以创建辅助地图,以便在需要时提供快速访问。但是,除非您有数百万个对象或具有较高的事务量应用程序,否则通常不需要这样做。