使用十六进制和 Java 集合框架选择
Using Hexadecimals and Java Collection Framework Choices
我正在使用包含 20 个十六进制值的输入文件。我必须读取这些对并将它们存储在适当的 Java 集合中,然后按照它们的十六进制值的递增顺序对这些对进行排序,并使用迭代器将排序后的对显示到控制台。我的问题是最好使用哪个集合?哈希表?链表?树?等等。它们看起来都是不错的选择,但我无法决定哪种方式更有效。
#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
我会创建一个class来封装数据,它将实现 Comparable 接口
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
排序 class:
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 检查。
你有一个配对列表。您可以使用 Map
并将十六进制代码作为键,将名称作为值。键需要排序,所以你需要一个 SortedMap
例如 TreeMap.
它可能是一个 TreeMap<Integer, String>
如果你在插入之前在键上使用 Integer.parseInt("xxxxxx", 16)
,它给出你比将它们保留为字符串更好的性能。
我正在使用包含 20 个十六进制值的输入文件。我必须读取这些对并将它们存储在适当的 Java 集合中,然后按照它们的十六进制值的递增顺序对这些对进行排序,并使用迭代器将排序后的对显示到控制台。我的问题是最好使用哪个集合?哈希表?链表?树?等等。它们看起来都是不错的选择,但我无法决定哪种方式更有效。
#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
我会创建一个class来封装数据,它将实现 Comparable 接口
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
排序 class:
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 检查。
你有一个配对列表。您可以使用 Map
并将十六进制代码作为键,将名称作为值。键需要排序,所以你需要一个 SortedMap
例如 TreeMap.
它可能是一个 TreeMap<Integer, String>
如果你在插入之前在键上使用 Integer.parseInt("xxxxxx", 16)
,它给出你比将它们保留为字符串更好的性能。