Java中ArrayList内的HashMap获得覆盖

来源:爱站网时间:2021-09-16编辑:网友分享
假设我有一个字符串“ abca”。我想使用Java中的HashMap和ArrayList跟踪每个索引中每个字母的出现。例如,如果a = 0,b = 1,c = 2,我希望输出如下:for ...

问题描述


假设我有一个字符串"abca"。我想使用Java中的HashMap和ArrayList跟踪每个索引中每个字母的出现。例如,如果a = 0,b = 1,c = 2,我希望输出如下:输入:abca

[{0=1},{0=1, 1=1},{0=1, 1=1, 2=1},{0=2, 1=1, 2=1}];

我已经用Java编写了此解决方案:

public static void main(String[] args){
     Scanner in = new Scanner(System.in);

     String x = in.next();
     char a[] = x.toCharArray();
     HashMap hm = new HashMap();
     ArrayList> list = new ArrayList();

     for(int i=0;i

但是我得到的输出为:

[{0=2, 1=1, 2=1}, {0=2, 1=1, 2=1}, {0=2, 1=1, 2=1}, {0=2, 1=1, 2=1}]

在迭代结束时,ArrayList正在更新HashMap的最后阶段的所有索引。

解决方法:


原始地图在每次迭代中都会发生变异,因此,要解决此问题,您需要创建一个新的HashMap并在每次迭代中添加它。

list.add(new HashMap(hm));

输出:

[[{0 = 1},{0 = 1,1 = 1},{0 = 1,1 = 1,2 = 1},{0 = 2,1 = 1,2 = 1}]

上一篇:MongoDB:StackOveflowError

下一篇:ArrayLists and returning null

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载