【问题标题】:Modify String objects in a static array修改静态数组中的 String 对象
【发布时间】:2016-09-25 23:14:50
【问题描述】:

我想创建一个 for 循环来为列表中的每个字符串对象添加一个字母。我只是不确定如何编辑列表中的对象而不是实际列表。

例如,如果我想在列表中每个对象的末尾添加“ing”..

我觉得这很简单,但我一直在寻找 oracle 并且无法弄清楚是否有人能指出我正确的方向?

我真的可以使用任何类型的列表......只要任何有效的东西。

我在想类似的东西,

    String[] stringArray = tools.toArray(new String[0]);
            for (int i = 0; i < stringArray.length; i++)
            {
                stringArray[i] = stringArray[i].*part that would modify would go here*
            }

【问题讨论】:

  • 你不能修改字符串,所以你需要使用其他类型的对象或修改列表。
  • 更新答案。

标签: java arrays string list object


【解决方案1】:

您无法编辑String。它们是不可变的。但是,您可以替换列表中的条目。

ArrayList<String> list = new ArrayList<>();
list.add("load");
list.add("pull");

for (int i = 0; i < list.size(); ++i) {
    list.set(i, list.get(i) + "ing");

您更新了问题以指定静态数组:

stringArray[i] = stringArray[i] + "ing";

赋值的右侧是执行字符串concatenation,这可以使用Java 中的+ 运算符来完成。

【讨论】:

  • 我认为做 stringArray[i] = stringArray[i] + "ing";将自动将旧引用替换为为连接创建的新字符串之一。
【解决方案2】:

您可以为此目的使用 StringBuilder。

public static void addIng(String[] arr) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < arr.length; i++) {
        sb.setLength(0);
        sb.append(arr[i] + "ing");
        arr[i] = sb.toString();
    }
}

【讨论】:

    【解决方案3】:

    字符串在java中是不可变的;它们一经创建就无法修改。

    看来你有几个选择;您可以创建一个方法来获取您的列表并返回一个新列表,方法是将'ing' 附加到列表中每个字符串的末尾。

    或者,如果您需要保留对原始列表的引用,您可以遍历列表的内容(ArrayList?)并弹出每个字符串,创建一个带有附加'ing'的新字符串,并替换列表。

    【讨论】:

      【解决方案4】:

      类似

      List<String> list = new ArrayList<>();
      list.add("testing");
      for(String s:list){
          s=s+"ing";
      }
      

      【讨论】:

        【解决方案5】:

        请看下面的示例。

           //Java 8 code.
           List<String> oldList = Arrays.asList("a", "b");
           List<String> newList = oldList.stream().map(str -> new StringBuilder(str).append("ing").toString()).collect(Collectors.toList());
           System.out.println(oldList); // [a, b]
           System.out.println(newList); // [aing, bing]
        
           // Java 7 or below.
           List<String> oldList = Arrays.asList("a", "b");
           List<String> newList = new LinkedList<String>();
           for (String str : oldList) {
               newList.add(new StringBuilder(str).append("ing").toString());
           }
           System.out.println(oldList); // [a, b]
           System.out.println(newList); // [aing, bing]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-08
          • 2021-05-23
          • 2013-05-17
          • 2021-04-30
          相关资源
          最近更新 更多