我有这个问题,我不知道如何处理.我有两个数组列表,一个包含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循环完成.有什么建议?
您可以使用以下方法解决问题:
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包含您所需的答案.
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |