У меня есть этот код:
HashMap<String, String[]> unsorted = new HashMap<String, String[]>();
String[] values = new String[3];
String key;
//add data to hashmap
key = "abc";
values[0] = "a"; values[1]="b"; values[2]="c";
unsorted.put(key, values);
key = "abc";
values[0] = "aa"; values[1]="bb"; values[2]="cb";
unsorted.put(key, values);
key = "def";
values[0] = "d"; values[1]="e"; values[2]="f";
unsorted.put(key, values);
//sort hashmap
/***********/
//output should be:
{ abc-[a,b,c], abc-[aa,bb,cc], def-[d,e,f] }
//or
{ abc-[aa,bb,cc], abc-[a,b,c], def-[d,e,f] }
Как я могу так отсортировать?Примечание. Я пытался использовать TreeMap и другие примеры, но они исключают элементы, в которых ключи равны.
Редактировать: Я решил свою проблему :) спасибоГийому.Вот что я использовал:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class test {
public static void main(String[] args) {
ArrayList<CustomObject> objs = new ArrayList<CustomObject>();
objs.add(new CustomObject("abc", new String[] {"a", "b", "c"}));
objs.add(new CustomObject("def", new String[] {"d", "e", "f"}));
objs.add(new CustomObject("abc", new String[] {"aa", "bb", "cc"}));
System.out.println(objs.isEmpty());
Collections.sort(objs, new Comparator<CustomObject>() {
@Override
public int compare(CustomObject o1, CustomObject o2) {
int i = o1.getKey().compareTo(o2.getKey());
if(i == 0)
return -1;
return i;
}
});
for(int i=0; i<objs.size(); i++)
System.out.println("key/value pair:" + objs.get(i).getKey() + " - " + objs.get(i).getValues()[0]);
}
}
И CustomObject:
public class CustomObject {
private String key;
private String[] values;
public CustomObject(String key, String[] values) {
this.key = key;
this.values = values;
}
public String getKey() {
return key;
}
public String[] getValues() {
return values;
}
}