Это первый раз, когда я должен заказать HashMap
в Java. Мне нужно сделать это с помощью ключа, но в моем случае ключ - это объект, поэтому мне нужно заказать его по определенному полю. Пытаясь понять это по моему Я считал, чтобы продолжить с этим простым скрипом кода:Лучший способ заказать HashMap ключом на Java?
private HashMap<SimpleDBField, String> sortTable(HashMap<SimpleDBField, String> row){
LinkedHashMap<SimpleDBField, String> orderedRow = new LinkedHashMap<SimpleDBField, String>();
for(int i = 1; i <= row.size(); i ++){
Iterator iterator = row.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<SimpleDBField, String> entry = (Map.Entry<SimpleDBField, String>) iterator.next();
if(entry.getKey().getListPosition()==i){
orderedRow.put(entry.getKey(), entry.getValue());
break;
}
}
}
return orderedRow;
}
Если предположить, что это работает, и я не забочусь о производительности, прежде, чем на самом деле использовать его, я хотел бы знать, если следующая царапина кода может быть лучше и важнее: почему?
Пример ниже источник здесь: How to sort HashMap by key and value in Java
public static <K extends Comparable,V extends Comparable> Map<K,V> sortByKeys(Map<K,V> map){
List<K> keys = new LinkedList<K>(map.keySet());
Collections.sort(keys);
Map<K,V> sortedMap = new LinkedHashMap<K,V>();
for(K key: keys){
sortedMap.put(key, map.get(key));
}
return sortedMap;
}
Если оба не правы, как я должен делать это?
возможно дубликат [Как отсортировать HashMap в Java] (http://stackoverflow.com/questions/780541/how-to-sort- a-hashmap-in-java) –
Вы не можете этого сделать; по определению, HashMap не имеет определенного порядка для своих ключей. Кроме того, вам нужен порядок вставки или некоторый естественный порядок (т. Е. С помощью Comparable)? – fge
Хэш-коллекции всегда неупорядочены, чтобы обеспечить максимально возможную производительность доступа по ключу. –