首页 > 解决方案 > 为什么下面代码的输出是这个映射:{1=[Dd,Ff], 2=[Dd,Ff], 3=[Dd,Ff], 4=[Dd,Ff]}?

问题描述

我预期的输出是:{1=[Aa,Cc], 2=[Bb,Dd], 3=[Cc,Ee], 4=[Dd,Ff]}?我只是想为数组中的每个字母(第一个和最后一个字母除外)创建带有相邻字母的单独数组列表,然后将这些数组列表作为值放入映射中。

import java.util.ArrayList;
    import java.util.HashMap;
    public class Demo{
    public static void main(String[] args){
            String[] arr = {"Aa", "Bb", "Cc", "Dd", "Ee", "Ff"};
            ArrayList<String> al = new ArrayList<>();
            HashMap<Integer,ArrayList<String>> mp = new HashMap<>();
            
            for(int i = 1; i < 5; i++){
                al.clear(); 
                al.add(arr[i-1]);
                al.add(arr[i+1]);
                mp.put(i,al);
            }
            
            System.out.print(mp);
        }
    }

标签: java

解决方案


我只是想制作单独的数组列表

这不是这段代码的作用。此代码生成一个数组列表。

在循环中,不是清除列表,而是创建一个新列表。

 for (int i = 1; i < 5; i++) {
   al = new ArrayList<>();
   ...

推荐阅读