java中arraylists的配对值

Gam*_*tiz 0 java arraylist

我有这个问题,我不知道如何处理.我有两个数组列表,一个包含String,另一个包含整数,如下所示:

 *  Utah           5
 *  Nevada         6
 *  California    12
 *  Oregon        8
 *  Utah          9
 *  California   10
 *  Nevada        4
 *  Nevada        4
 *  Oregon       17
 *  California    6
Run Code Online (Sandbox Code Playgroud)

我需要在阵列列表中产生这样的结果:犹他州[5,9]内华达[6,4,4]加利福尼亚[12,10,6].

老实说,我不知道如何处理这个,我正在寻找如何做到这一点的建议.

我被建议使用arraylist of arraylist,这是我到目前为止所拥有的.

    int i=0;
        ArrayList<ArrayList<Integer>> values  = new ArrayList<ArrayList<Integer>>();

        while (i<categories.size())
        {
            String cat=categories.get(i);
            i++;
            for (int r = 0; r < column1.size();r++) {
                if(column1.get(r)==cat)
                {
                    int value = column2.get(r);
                    ArrayList<Integer> val=new ArrayList<Integer>();
                    val.add(value);
                    values.add(val);
                }
        }
Run Code Online (Sandbox Code Playgroud)

Column1 =状态列表,column2 =整数列表和categories = categories列表.

我现在的问题是for循环似乎只是一遍又一遍地添加相同的数组,直到while循环完成.有什么建议?

Kar*_*kar 5

您可以使用以下方法解决问题:

List<String> states = Arrays.asList(
        "Utah", "Nevada", "California", "Oregon", "Utah",
        "California", "Nevada", "Nevada", "Oregon", "California"
    );

List<Integer> values = Arrays.asList(5, 6, 12, 8, 9, 10, 4, 4, 17, 6);


Map<String, List<Integer>> resultMap =HashMap<String, Arraylist<>>();

for(int i = 0; i < states.size(); i++) 
    {
           if( resultMap.get(states.get(i))!=null){
              resultMap.get(states.get(i)).add(values.get(i));
           }else{
            List<Integer> valuelist = new ArrayList<>();
             valuelist.add(values.get(i));
             resultMap.put(states.get(i),valuelist);
          }
    }  
Run Code Online (Sandbox Code Playgroud)

resultMap包含您所需的答案.