我使用一个包含20个十六进制值的输入文件。我必须读取这些对并将它们存储在适当的Java集合中,然后按照它们的十六进制值的递增顺序对它们进行排序,并使用迭代器将排序后的对显示到控制台。我的问题是哪个收藏最好使用?HashMap?LinkedList?树?等等,它们看起来都是很好的选择,但我无法决定怎样才能更有效。
#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发布于 2015-02-26 22:35:39
我将创建一个类来封装数据,这将实现可比较的接口。
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..you将从文件中读取这些
注:未测试。我假设任何地方都有理智的值,所以没有NP检查。
发布于 2015-02-26 22:46:07
你有一张成双成对的单子。您可以使用带有十六进制代码的Map作为键和名称作为值。键需要排序,所以您需要一个SortedMap (如TreeMap. )--如果在插入前对键使用Integer.parseInt("xxxxxx", 16),则可能是TreeMap<Integer, String>,这比将它们保留为字符串提供了更好的性能。
https://stackoverflow.com/questions/28754022
复制相似问题