mydomain.net/page/pageA
mydomain.net/page/pageB
表示此数据的最佳数据结构是什么。名称应该能够轻松迭代。
修改
名称是唯一的。 需要做的是这样的事情。 有人怀疑使用Hashmap,为什么我问。 代码是STRING
Name - Code (String)
A - 123
B - 123
C - 23
D - 123
E - 23
F - 23
G - 66
H - 66
答案 0 :(得分:5)
如果名称是唯一的,那么HashMap将是适当的。
您可以使用keys()
迭代密钥。
要遍历条目,您可以迭代entrySet()
。
请参阅Map
如果您需要执行反向查找,可以使用Guava中的BiMap。 (一般非常好的图书馆)
地图条目示例:
public final class MapExample {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("A", "123");
for (Map.Entry<String, String> mapEntry : map.entrySet()) {
if (mapEntry.getKey().equals("A")) {
final String code = mapEntry.getValue();
System.out.println("Your desired code: " + code);
}
}
}
}
但由于NAME似乎是一个常数,你可以简单地做String code = map.get(NAME)
?
答案 1 :(得分:1)
听起来像Map
。具体来说,如果名称的顺序很重要,您可以使用TreeMap
。
您可以使用put
方法填充它,然后遍历条目(或只是键,或只是值):
// Fill the map:
Map<String, String> map = new TreeMap<>();
map.put("A", "123");
map.put("B", "123");
// etc...
// Iterate over it:
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.pritnln ("Key: " + entry.getKey() + " value: " + entry.getValue());
}
编辑:
如果订单不重要,如后来对OP的修改中所述,HashMap
就可以了。
但请注意,如果您正在寻找特定的密钥,如OP中的示例所述,那么循环密钥是没有意义的 - 您只需要使用get
或{{1 }}:
containsKey
答案 2 :(得分:1)
我认为你在考虑这个:
public enum Code {
A("123"),
B("123"),
C("23"),
D("123"),
E("23"),
F("23"),
G("66"),
H("66");
final public String value;
Code(String value) {
this.value = value;
}
}
String h = Code.H.value;
for (Code code : Code.values()) {
System.out.printf("Name %s, code %s%n", code, code.value);
}
答案 3 :(得分:0)
我建议去HashMap
HashMap类使用哈希表来实现Map接口。 这允许基本操作的执行时间,例如get() 和put(),即使对于大型集合也保持不变
HashMap可以有效地根据键和值来定位值 根据键插入和删除值。一个条目 HashMap没有订购。
import java.util.HashMap;
import java.util.Set;
public class MyHashMapRead {
public static void main(String a[]){
HashMap<String, Integer> hm = new HashMap<String, Integer>();
//add key-value pair to hashmap
hm.put("A", "1");
hm.put("B", "2");
hm.put("C","3");
System.out.println(hm);
Set<String> keys = hm.keySet();
for(String key: keys){
System.out.println("Value of "+key+" is: "+hm.get(key));
}
}
}