2015-02-26 3 views
0

Я использую входной файл, содержащий 20 шестнадцатеричных значений. Я должен прочитать пары и сохранить их в соответствующей сборке Java, затем отсортировать пары в порядке возрастания их шестнадцатеричных значений и использовать итераторы для отображения отсортированных пар на консоли. Мой вопрос: какую коллекцию лучше использовать? HashMap? LinkedList? Дерево? и т. д. Все они кажутся хорошим выбором, но я не могу решить, что будет более эффективным.Использование Hexadecimals и Java Framework Framework.

#FF0000 //red 
#000084 //blue 
#00FF00 //green 
#FFFF00 //yellow 
#FF8C00 //Orange 
#FFC0CB //Pink 
#D3D3D3 //Grey 
#964B00 //Brown 
#800080 //Purple 
#000000 //Black 
#013220 //Dark green 
#8B0000 //Dark Red 
#00008B //Dark blue 
#D97700 //Dark Orange 
#363737 //Dark grey 
#471E8A //Dark Purple 
#7f7f00 //Dark yellow 
#FFFFCC //Light Yellow 
#C0D9D9 //Light Blue 
#D8BFD8 //Light Purple 
+0

Вы уверены, что используете тег [tag: css]? Мне кажется неправильным тегом. И вы бы использовали тип коллекции, который наилучшим образом соответствовал бы основной цели вашей коллекции. Если он будет почти всегда отсортирован, то, возможно, TreeSet. –

ответ

2

Я хотел бы создать класс для инкапсуляции данных, которая будет осуществлять Сопоставимые интерфейс

public class HexColor implements Comparable<HexColor>{ 
    private String hexCode; 
    private String name; 

    //Constructor, getters and setters 
... 
    public int compareTo(HexColor other){ 
     return this.hexCode.compareTo(other.hexCode); 
    } 
} 

Затем вы можете поместить его в List и сортировать его с помощью Collections класса:

List<HexColor> colors = new ArrayList<HexColor>(); 
colors.add(new HexColor("#00xxxx", "color 1")); 
colors.add(new HexColor("#00xxxx", "color 1")); 
... 
Collections.sort(colors); 
//Some print in loop here 

.. вы будете читать их из файла

ПРИМЕЧАНИЕ. Не проверено. Я принимаю здравые значения везде, поэтому нет проверок NP.

0

У вас есть список пар. Вы можете использовать Map с шестнадцатеричными кодами в качестве ключей и именами как значения. Ключи должны быть отсортированы, поэтому вам понадобится SortedMap, например TreeMap. Это может быть TreeMap<Integer, String>, если вы используете Integer.parseInt("xxxxxx", 16) на ключах перед вставкой, что дает вам лучшую производительность, чем оставлять их в виде строк.

+0

Зачем нам нужна карта? – FreshCoder

+0

Я думаю, что идея Неплатного Юдая казалась бы более идиоматичной для большинства людей. Но для чего это стоит, с помощью 'TreeMap' вы можете просто перебирать пары с чем-то вроде этого:' for (Map.Entry entry: colorsMap.entrySet()) {System.out.println (запись. getKey() + "->" + entry.getValue()); } '. И явный запрос сортировки не требуется. –

+0

Вы можете уточнить карту? как отличие от хэш-карты и treemap? @Lucas Ross – FreshCoder