Java循环问题
我有大约15个字符串变量,如下所示Java循环问题,java,string,loops,do-while,Java,String,Loops,Do While,我有大约15个字符串变量,如下所示 String jack = "blue, orange, green, purple"; String blue = "Yellow, red"; String yellow = "sky, wind, earth"; String orange = "char1, char2 , char3"; 我正在尝试将字符串“Jack”添加到arrayList中。我正在使用split函数(在“''”上拆分)将它们添加到arrayList中 我所要做的就是当我
String jack = "blue, orange, green, purple";
String blue = "Yellow, red";
String yellow = "sky, wind, earth";
String orange = "char1, char2 , char3";
我正在尝试将字符串“Jack”添加到arrayList中。我正在使用split函数(在“''”上拆分)将它们添加到arrayList中
我所要做的就是当我到达jack字符串中的“蓝色”时,我必须在添加“橙色”等之前将“黄色”和“红色”添加到arraylist中
如何实现这一点?非常感谢您的帮助。使用变量名称的行为称为反射。这可能不是您想要做的 您可以初始化
HashMap
,以(可能)实现您想要的:
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("jack", Array.asList("blue", "orange", "green", "purple"));
map.put("blue", Array.asList("yellow", "red"));
map.put("yellow", Array.asList("sky", "wind", "earth"));
map.put("orange", Array.asList("char1", "char2", "char3"));
List<String> results = new ArrayList<String>();
for (String s : map.get("jack")) {
if (map.get(s) != null) {
for (String s2 : map.get(s)) { results.add(s2); }
}
}
Map Map=newhashmap();
map.put(“jack”,Array.asList(“蓝色”、“橙色”、“绿色”、“紫色”);
map.put(“蓝色”,Array.asList(“黄色”,“红色”);
地图.put(“黄色”,数组.asList(“天空”,“风”,“地球”);
map.put(“橙色”,Array.asList(“char1”,“char2”,“char3”);
列表结果=新建ArrayList();
for(字符串s:map.get(“jack”)){
if(map.get(s)!=null){
对于(字符串s2:map.get(s)){results.add(s2);}
}
}
您没有提到是否要递归地执行此操作(例如,每当您点击一种颜色时,使用该颜色的列表)。我并没有这样实现它,但如果您需要它,您应该从堆栈中推送和弹出(类似于深度优先搜索).尝试在代码中使用变量名称作为逻辑的一部分,几乎肯定反映了设计问题。生成的代码将很脆弱且难以阅读。除非您被迫在不进行更改的情况下使用该代码,否则我建议重构以使用不同的方法:
Map<String, List<String>> colours = new HashMap<>();
colours.put("blue", Arrays.asList("yellow", "red"));
colours.put("yellow", Arrays.asList("sky", "wind", "earth"));
colours.put("orange", Arrays.asList("char1", "char2", "char3"));
String result = Arrays.stream(jack.split(", "))
.map(str -> colours.getOrDefault(str, str))
.collect(Collectors.joining(", "));
Map colors=newhashmap();
颜色.put(“蓝色”),数组.asList(“黄色”,“红色”);
颜色。放置(“黄色”,数组。asList(“天空”,“风”,“地球”);
颜色.put(“橙色”,数组.asList(“char1”,“char2”,“char3”);
字符串结果=Arrays.stream(jack.split(“,”))
.map(str->colors.getOrDefault(str,str))
.collect(收集器。连接(“,”);
请阅读以下关于如何在此网站上提问的文章:。至少,我们需要您向我们展示您的代码,并告诉我们具体出了什么问题。离题评论:在这种情况下,最好使用Array.asList(“蓝色”、“橙色”)
而不是使用带有初始值设定项技巧的匿名类(new ArrayList(){{add(…);add(…)}}`)是为了可读性。@AdrianShum谢谢,我会把它改成那样的。好多了!