java - 为什么下面代码的输出是这个映射:{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);
}
}
解决方案
我只是想制作单独的数组列表
这不是这段代码的作用。此代码生成一个数组列表。
在循环中,不是清除列表,而是创建一个新列表。
for (int i = 1; i < 5; i++) {
al = new ArrayList<>();
...
推荐阅读
- c++ - 在谷歌测试中检测分离线程调用exit(0)
- sql - ERD UML 建议 (SQL)
- search - 访问 Google 搜索结果的最后一页
- mysql - 如何使用 GROUP_CONCAT 动态旋转和生成串联列名
- node.js - 异步函数中的错误处理
- c++ - 向旧的 Qt PieMenu 添加新的行和空格
- elasticsearch - Logstash 不适用于弹性
- kotlin - 订阅 thenMany 项目失败
- jenkins - 如何使用 Jenkins 中的 Bitbucket Team/Project 插件从项目中扫描存储库
- java - 带有切片和范围的 Android 布局自定义圆形进度条