Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中带索引和两个值的数据结构_Java_Android_Data Structures_Key Value - Fatal编程技术网

java中带索引和两个值的数据结构

java中带索引和两个值的数据结构,java,android,data-structures,key-value,Java,Android,Data Structures,Key Value,我想整理一些数据,但我发现关键值数据结构不符合我的要求 我有一些数据如下: 1 | new CustomObject[] {...} 1 | etc... 5 | 8 | 19 | 目前,我将第一列放入一个键,第二列放入一个值 我遇到的问题是,当我将新值放入键值数据结构时,有时会覆盖一个键中的值,因为有多个值具有相同的键 理想情况下,我正在寻找的数据结构将具有诸如keyAt(int-index)之类的方法 有人知道什么样的数据结构可以满足我的要求吗?

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

我有一些数据如下:

1    |  new CustomObject[] {...}
1    |  etc...
5    |  
8    |  
19   |  
目前,我将第一列放入一个键,第二列放入一个值

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

理想情况下,我正在寻找的数据结构将具有诸如
keyAt(int-index)
之类的方法

有人知道什么样的数据结构可以满足我的要求吗?

由于我是为Android开发的,我已经看过了Android数据结构的文档,如和,但是它们都是键值结构,这意味着在输入新值时我的键值将被覆盖。

  • 根据我的理解,你真正想要的是 顺序数组,每个索引有两个值。你能做什么 我的理解是有两个并行的
    ArrayList
    s,其中一个是 “键”列表和另一个列表保存与 钥匙。你只需要确保当你在其中添加一些东西时, 您还可以更新另一个。你可以做的另一件事是创建一个 类的每个实例同时持有“键”及其 价值观

    • 这些方法的问题在于,您无法保留该功能 按键拉,但你必须按索引拉,然后检查 关键和价值
  • 另一个选项是使用一个
    HashMap
    ,这样每个键都有一个与之关联的值列表

    • 这种方法的问题是,在添加新元素时,您要么必须检查是否存在键,然后将其追加到现有列表中
      • 根据我的理解,你真正想要的是 顺序数组,每个索引有两个值。你能做什么 我的理解是有两个并行的
        ArrayList
        s,其中一个是 “键”列表和另一个列表保存与 钥匙。你只需要确保当你在其中添加一些东西时, 您还可以更新另一个。你可以做的另一件事是创建一个 类的每个实例同时持有“键”及其 价值观

        • 这些方法的问题在于,您无法保留该功能 按键拉,但你必须按索引拉,然后检查 关键和价值
      • 另一个选项是使用一个
        HashMap
        ,这样每个键都有一个与之关联的值列表

        • 这种方法的问题是,在添加新元素时,您要么必须检查是否存在键,然后将其追加到现有列表中
      类密钥{
      公共int hashCode(){
      /*烧点东西*/
      }
      }
      地图
      
      在这方面什么不符合您的要求

      类密钥{
      公共int hashCode(){
      /*烧点东西*/
      }
      }
      地图
      
      在这方面什么不符合您的要求

      在的帮助下,我能够为我的特定用例找到解决方案

      因为我使用的是Android,所以我使用了类(也可以通过v4支持库获得)和
      列表来帮助我实现我想要的

      我用过:

      List<Pair<Integer, CustomObject>>
      
      列表
      
      在的帮助下,我能够为我的特定用例找到解决方案

      因为我使用的是Android,所以我使用了类(也可以通过v4支持库获得)和
      列表来帮助我实现我想要的

      我用过:

      List<Pair<Integer, CustomObject>>
      
      列表
      

      在我看来,您希望将两个值(您调用的是key和value)保存到一个值中,因为如果键不是唯一的,那么它就不是真正的“键”。但这不是一个简单的列表吗?为什么不用同一个键连接这些值呢?例如:“1->[2,3],1->[4]”-->“1->[2,3,4]”?@Salem我可以这么做,但我觉得这会不必要地使我的代码复杂化,因为我已经有了一个数组作为我的值。@pedroavid你知道,我没有想到这一点!除非有人能想出更好的方法,否则我可能会使用你的建议。作为旁注,创建元组很容易,但有一件事我发现它“太普通了”,你会怎么称呼它?我通常调用getFirst()和getSecond(),但是什么是第一个,什么是第二个?根据项目的复杂性,没有泛型的特定类可能更清晰。在我看来,您希望将两个值(称为key和value)保存到一个值中,因为如果键不是唯一的,它就不是真正的“键”。但这不是一个简单的列表吗?为什么不用同一个键连接这些值呢?例如:“1->[2,3],1->[4]”-->“1->[2,3,4]”?@Salem我可以这么做,但我觉得这会不必要地使我的代码复杂化,因为我已经有了一个数组作为我的值。@pedroavid你知道,我没有想到这一点!除非有人能想出更好的方法,否则我可能会使用你的建议。作为旁注,创建元组很容易,但有一件事我发现它“太普通了”,你会怎么称呼它?我通常调用getFirst()和getSecond(),但是什么是第一个,什么是第二个?根据项目的复杂程度,没有泛型的特定类可能更清晰。看起来您的关键类可以是Integer类。无需定义单独的密钥类!好的,一般来说,如果你想在hashtable中保存一些东西,它必须是hashtable是的,原语int显然不是“hashtable”,但Integer肯定是。我假设Integer的hashcode只是整数值本身,但不是100%确定的。另外,使用List(一个接口)而不是ArrayList(一个实现)。不过我同意你的一般想法。看起来你的关键类可以是整数类。不