aun*_*low 5 java arrays lambda treemap java-8
类似的问题请参阅:如何使HashMap与数组一起使用?
但我需要TreeMap ((int key1, int key2) -> String),key1然后比较key2.
我的解决方案是:
Map<int[], String> map = new TreeMap<>(Comparator.
<int[]>comparingInt(key -> key[0]).thenComparingInt(key -> key[1]));
Run Code Online (Sandbox Code Playgroud)
但是当我需要时((int key1, int key2, int key3) -> String,我必须写更多.
有没有办法为任意长度的数组生成Comparator?
Eug*_*ene 10
从java-9开始,这可以通过以下方式大大简化:
TreeMap<int[], String> map = new TreeMap<>(Arrays::compare);
Run Code Online (Sandbox Code Playgroud)
带循环的比较器应该可以解决问题.如果我理解你的要求,那就是这样的.我应该提到它假设所有键都具有相同的长度.
Map<int[], String> treeMap = new TreeMap<>((o1, o2) -> {
for (int i = 0; i < o1.length; i++) {
if (o1[i] > o2[i]) {
return 1;
} else if (o1[i] < o2[i]) {
return -1;
}
}
return 0;
});
Run Code Online (Sandbox Code Playgroud)