【问题标题】:ArrayList replaceAll() not workingArrayList replaceAll()不起作用
【发布时间】:2012-11-06 18:02:42
【问题描述】:

我不知道我的代码有什么问题。无论我尝试替换什么,都不会出错。 我有一个private static ArrayList<String> lista

我填写这个。然后在另一种方法中,无论我尝试什么,我都无法替换任何东西,就像这样:

public static void replacing() {
    Collections.replaceAll(lista, "a", "!!!!!!!!!!!!!!!!!!!!!");
}

然后我在方法中打印这个和lista是一样的,没有任何改变。之后我应该检查什么?

public class MyProgram {
    private static ArrayList < String > lista;
    public static void fileReading() {
        lista = new ArrayList < String > ();
        try {
            inp = new LineNumberReader(new BufferedReader(new InputStreamReader(new FileInputStream(inFileNev), "ISO8859-1")));
            String sor;
            while ((sor = inp.readLine()) != null) {
                lista.add(sor);
                lista.add(System.getProperty("line.separator"));
            }
            inp.close();
        } catch...
    }
    public static void searching() {
        Collections.replaceAll(lista, "a", "b");
        System.out.println(lista.toString());
    }
}

【问题讨论】:

  • 您应该考虑编辑您的问题并添加您的 lista 内容,因为您的 sn-p 看起来正确
  • lista 包含什么以及您是如何创建它的?
  • 请具体说明。你到底把什么放在列表中?发布创建列表、添加到列表并尝试调用您的方法的完整代码。
  • 您的列表是否包含元素/字符串“a”????
  • 您是否有可能尝试将 ArrayList 中任何元素中的任何字符 'a' 替换为字符串 "!!!!!!!!!!!!!!!! !!!!!!” ??

标签: java arraylist replaceall


【解决方案1】:
List<String> list = Arrays.asList(new String[] {"a","b"});      
System.out.println(list);
Collections.replaceAll(list, "a", "!!!!!");
System.out.println(list);

给予

[a, b]
[!!!!!, b]

上面的代码示例表明Collections.replaceAll确实有效。

【讨论】:

    【解决方案2】:

    这是一个解释 Collections.replaceAll 的示例

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class Test {
        public static void main(String[] args) {
            List<String> sLst = new ArrayList<String>();
            sLst.add("A");
            sLst.add("B");
            sLst.add("C");
            sLst.add("A");
            // This will replace all "A" with "Z"
            Collections.replaceAll(sLst, "A", "Z");
            System.out.println(sLst);// [Z, B, C, Z]
    
        }
    }
    

    【讨论】:

      【解决方案3】:
      List<String> list = Arrays.asList(new String[] {"a","ba",new String("a")});      
      Collections.replaceAll(list, "a", "!!!!!");
      System.out.println(list);
      

      输出将是

      !!!!! ba !!!!!

      它不会替换“ba”中的“a”

      【讨论】:

      • 谢谢大家。我只能在2个答案中给出相关代码: public class MyProgram { private static ArrayList lista; public static void fileReading() { lista = new ArrayList();尝试 { inp = new LineNumberReader(new BufferedReader(new InputStreamReader(new FileInputStream(inFileNev), "ISO8859-1")));字符串排序; while ((sor = inp.readLine()) != null) { lista.add(sor); lista.add(System.getProperty("line.separator")); }
      • inp.close(); } 捕捉... } 公共静态无效搜索() { Collections.replaceAll(lista, "a", "b"); System.out.println(lista.toString());我试过这个,但它只打印原始列表它包含几个'a'并与其他人一起尝试过,但它什么也没替换。
      • 我不确定这是否是我正在寻找的正确方法。我需要替换旧字符串,例如: abc(... 或 abc ( ,我想将“abc”替换为新字符串,例如“xyz”。“abc”是方法名称,所以我必须搜索 ' (' 也一样,只替换名称,并保留后面的内容 replaceAll() 可以正常工作吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多