为了账号安全,请及时绑定邮箱和手机立即绑定

更新 ArrayList 中匹配字母的所有实例

更新 ArrayList 中匹配字母的所有实例

手掌心 2023-06-08 17:35:20
如果某个字母存在于另一个 ArrayList 中,我正在尝试更新包含字母的字符串 ArrayList。但是,代码只更新它遇到的第一个实例,而不是所有实例。ArrayList word 包含字母 h,e,l,l,o, ,w,o,r,l,d,ArrayList underscores 包含与单词中每个字母对应的下划线。对于单词中的每个字母,我想获取它的索引并在同一索引处用该字母更新下划线。例如,对于 l,我想更新下划线以显示除了在 word 中找到字母 l 的索引之外的下划线。import java.util.ArrayList;class Main {  public static void main(String[] args) {    ArrayList<String> word = new ArrayList<String>();    word.add("h");    word.add("e");    word.add("l");    word.add("l");    word.add("o");    word.add(" ");    word.add("w");    word.add("o");    word.add("r");    word.add("l");    word.add("d");    for (String letter:word) {      System.out.print(letter);    }    System.out.println();    ArrayList<String> underscores = new ArrayList<String>();    for (String letter:word) {      if (letter.equals(" ")) {        underscores.add(" ");      } else {        underscores.add("-");      }    }    for (String letter: underscores) {      System.out.print(letter);    }    String l = "l";    for (String s:word) {      if (s.equals(l)) {        int index = word.indexOf(s);        underscores.set(index, l);      }    }    System.out.println();    for (String s:underscores) {      System.out.print(s);    }  }}
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

问题是word.indexOf(s)总是返回给定元素第一次出现的索引。来自List文档:

返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1。更正式地说,返回最低索引 i 使得 (o==null ? get(i)==null : o.equals(get(i))),如果没有这样的索引则返回 -1。

for-each您可以使用简单的旧for循环来更新列表中给定位置的字符串,而不是使用循环underscores

 for (int i = 0; i < underscores.size(); i++) {

    if (word.get(i).equals(l)) {

        underscores.set(i, l);

    }

}

输出将是:


hello world

----- -----

--ll- ---l-


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信