如何对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数组中的元素
答案 0 :(得分:0)
询问如何对Map
进行排序没有多大意义。有意义的是询问如何以特定顺序在地图中显示数据。
假设您的数据组织如下:
Map<Integer,int[]> data;
您可以使用以下任意顺序检索条目:
data.entrySet().stream()
.sorted(Map.Entry.comparingByValue(Comparator.comparingInt(a -> a[0])))
...
这基本上流式传输地图条目,并根据通过lambda表达式提取的整数对它们进行排序。您对数据的处理取决于您的需求,但您可以过滤,收集到条目列表或键列表等。
最后一点,这不是一个很好的数据结构。我建议你不要在数组中存储不同的数据域(vol和rank)。最好创建一个类,然后将数据存储为对象列表。您可以创建辅助地图,以便在需要时提供快速访问。但是,除非您有数百万个对象或具有较高的事务量应用程序,否则通常不需要这样做。