选择最佳数据结构

时间:2015-07-09 07:48:30

标签: java data-structures

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

4 个答案:

答案 0 :(得分:5)

如果名称是唯一的,那么HashMap将是适当的。

您可以使用keys()迭代密钥。

要遍历条目,您可以迭代entrySet()。 请参阅Map

的JavaDoc

如果您需要执行反向查找,可以使用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

  1. HashMap类使用哈希表来实现Map接口。 这允许基本操作的执行时间,例如get() 和put(),即使对于大型集合也保持不变

  2. HashMap可以有效地根据键和值来定位值 根据键插入和删除值。一个条目 HashMap没有订购。

  3. 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));
            }
        }
    }