我有一个我不知道如何解决的问题。我有两个数组列表,一个包含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/