我有ArrayList
包含值和索引,如何在不对索引进行排序的情况下对值进行排序?
示例:
ArrayList<Integer> arr = new ArrayList<Integer>();
arr.add(1,100);
arr.add(2,50);
arr.add(3,10);
结果将是{(3,10),(2,50),(1,100)} 谢谢:D
答案 0 :(得分:0)
你所问的内容没有意义,因为元素的索引与它的排序方式直接相关。您应该使用Map
或类似的东西。
答案 1 :(得分:0)
除Map
选项外,您可以考虑使用某种Key值对,并将其存储在数组中并根据值对数组进行排序。
有关潜在的键值对,请参阅this,或自行创建。
一个例子:
package com.example;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class KeyValue {
private int key;
private Integer value;
public KeyValue(int i, Integer j) {
key = i;
value = j;
}
public static void main(String[] args) {
List<KeyValue> arr = new ArrayList<KeyValue>();
arr.add(new KeyValue(1, 100));
arr.add(new KeyValue(2, 50));
arr.add(new KeyValue(3, 10));
Collections.sort(arr, new Comparator<KeyValue>(){
@Override
public int compare(KeyValue arg0, KeyValue arg1) {
return Integer.compare(arg0.getValue(), arg1.getValue());
}
});
for (KeyValue kv : arr){
System.out.println(kv);
}
}
public int getKey() {
return key;
}
public void setKey(int key) {
this.key = key;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
@Override
public String toString(){
return "("+key+","+value.toString()+")";
}
}