繁体   English   中英

Java中具有索引和两个值的数据结构

[英]Data structure with index and two values in java

我有一些要整理的数据,但是我发现键值数据结构不符合我的要求。

我有一些像这样的数据:

1    |  new CustomObject[] {...}
1    |  etc...
5    |  
8    |  
19   |  

当前,我将第一列放入一个键,第二列放入一个值。

我遇到的问题是,当我将新值放入键值数据结构中时,有时一个键的值会被覆盖,因为同一键有多个值。

理想情况下,我要查找的数据结构将具有诸如keyAt(int index)

有谁知道哪种数据结构可以满足我的要求?

自从我为Android开发以来,我已经查看了Android数据结构(如SparseArray<E>ArrayMap<K, V>的文档,但是它们都是键值结构,这意味着在放置新值时将覆盖我的键。

  • 据我了解,您真正想要的是一个有序数组,每个索引有两个值。 根据我的理解,您可以执行两个并行的ArrayList ,其中一个是“键”列表,另一个保存与键关联的值。 您只需要确保将某项添加到其中一项时,就同时更新了另一项。 您可以做的另一件事是创建一个类,其中该类的每个实例都包含“键”及其值。

    • 这些方法的问题在于,您将无法保持按键拉动的能力,而必须按索引拉动,然后检查键和值。
  • 另一个选择是具有HashMap<Key, List<value>> ,以便每个键都有与其关联的值的列表。

    • 这种方法的问题是,您要么必须检查密钥的存在,然后在添加新元素时将其追加到现有列表中。

Pedro的评论的帮助下,我能够找到针对我的特定用例的解决方案。

由于我使用的是Android,因此我使用Pair<F, S>类(也可以通过v4支持库获得)和List<E>来帮助我实现所需的功能。

我用了:

List<Pair<Integer, CustomObject>>
class Key {
  public int hashCode() {
  /*terurn something*/
 }
}

Map<Key,ArrayList<V>>

什么不符合您的要求?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM