Java中arraylists的配对值

Java中arraylists的配对值

我有一个我不知道如何解决的问题。我有两个数组列表,一个包含String,另一个包含整数,如下所示:

 *  Utah           5
 *  Nevada         6
 *  California    12
 *  Oregon        8
 *  Utah          9
 *  California   10
 *  Nevada        4
 *  Nevada        4
 *  Oregon       17
 *  California    6


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

老实说,我不知道如何解决这个问题,我正在寻找有关如何做到这一点的建议。

建议我使用arraylist的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);
                }
        }


列1 =状态列表,列2 =整数列表,类别=类别列表。

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

最佳答案

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

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


resultMap包含您所需的答案。

关于java - Java中arraylists的配对值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26228276/

10-10 14:33