在java中为以下数据选择完美的数据结构

2024-03-05

我必须根据我的需要选择一种数据结构,下面我解释一下有以下值的条件

abc,def,rty,ytr,dft   which all are map to row R1B1 (actully key is combination of R1+B1)
abEERc,dFFFef,rGGty   which all are map to row R1B2 (actully key is combination of R1+B2)
  KEY                      VALUE
abc,def,rty,ytr,dft --->    R1B1
abEERc,dFFFef,rGGty --->    R1B2

现在,例如,假设我得到ytr然后我就能检索到R1B1或者,比方说,我得到了价值rGGty然后我就能检索到R1B2

现在的情况是,事情具有搜索性、复杂性和时间,因为事情必须按顺序进行

例如,它会首先选择第一行进行搜索ytr,它首先会与abc哪个不匹配然后必须匹配def它不会再次匹配然后它会匹配rty也不会匹配然后它最终会匹配ytr最后它会找到钥匙R1B1 finally

类似地,如果需要搜索第二个字符串,可以说rGGty然后它将扫描第一行,其中找不到该值,然后搜索将继续到第二行,并且也在第二行中找到第三个元素rGGty作为元素然后它会检索R1B2作为价值

比方说,如果把这个东西放在map中,那么就会对key进行序列搜索,然后只有我们才能找到相应的值

人们请告知我可以在java中实现的最佳数据结构,其中我必须搜索键项以非常快的时间找到相应的值,这也不会影响性能 ,这种数据结构性能应该很高

请大家指教


可以使用 O(1) 访问键值对HashMap。但是如果你使用HashMap<String, String>那么更新值将会很痛苦,因为字符串是不可变的。这意味着您必须检查所有条目集,如果值匹配则更新它。因此,您可以为该值创建一个辅助类,并让所有键都指向该类的实例。这是一个包含最重要功能的存根,我想您可以自己添加其余的功能。

public class MyDataStructure {

  private Map<String, MyValue> key_value = new HashMap<String, MyValue>();
  private Map<String, MyValue> value_MyValue = new HashMap<String, MyValue>();

  public void set(String key, String value) {
    MyValue v = value_MyValue.get(value);
    if (v == null) { // should rarely happen, could check with containsKey
      v = new MyValue(value);
      value_MyValue.put(v);
    }
    key_value.put(key, v);
  }

  public String get(String key) {
    return key_value.get(key).getValue(); // key might not exist
  }

  public String changeValue(String oldValue, String newValue) {
    MyValue v = value_MyValue.remove(oldValue); // oldValue might not exist
    v.setValue(newValue); 
    value_MyValue.put(newValue, v);
    // will not work if newValue already exists... then you will have to merge
  }

  private class MyValue() {
    private String value;
    public MyValue(String value) {
      this.value = value;
    }
    public String getValue() {
      return value;
    }
    public void setValue(String value) {
      this.value = value;
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在java中为以下数据选择完美的数据结构 的相关文章

随机推荐