插入列表中间

时间:2013-11-20 14:41:20

标签: java collections

我有一个包含例如abc的元素列表。为了生成文档aXbc,我在位置1插入X。但是,列表将abc作为一个元素,因此位置1实际上位于列表内容的第4位。所以,我的问题是,如何在此列表的中间插入并直接生成aXbc?当然我可以浏览列表并concat每个元素......!但是在java中没有一个直接构成这个的结构吗?

list.add("abc");
list.add(1, "X");

想要aXbc

6 个答案:

答案 0 :(得分:1)

List中的元素和String中的字符混淆了。如果要在另一个String的中间插入字符或字符串,请使用StringBuilder

当然,如果您开始使用Characters,则可以创建List列表。

答案 1 :(得分:1)

你有一个字符串列表。要记住的一件事是String是不可变的:一旦它存在就无法改变它,你只能用新值覆盖它。

最好的做法是创建一个新字符串:

String value = "abc";
StringBuilder sb = new StringBuilder();

sb.append(value.subString(0, 1));
sb.append("X");
sb.append(value.subString(1, value.length()));

如果你真的想使用一个列表:

public static void main(String[] args) {
    String value = "abc";

    List<Character> characters = new ArrayList<Character>();
    for(char c : value.toCharArray()){
        characters.add(c);
    }

    characters.add(1, 'X');
    System.out.println(characters);

    StringBuilder sb = new StringBuilder();
    for(char c : characters){
        sb.append(c);
    }

    System.out.println(sb.toString());
}

输出:

  

[a,X,b,c]
  aXbc

这将根据给定字符串中的字符创建一个新的字符列表。

答案 2 :(得分:0)

你需要像

这样的东西
list.add(1, new StringBuilder(list.get(1)).insert(somePosition, "someString").toString());

这意味着将字符串放在列表的位置,并在所需位置插入一些字符串,并将其放回到同一position

答案 3 :(得分:0)

您需要list.set(index,Element)方法。 add方法会将新元素附加到List

 list.set(1, new StringBuilder(list.get(1)).insert(1, "X").toString());

答案 4 :(得分:0)

您需要一个专门的字符串列表,允许通过在其中插入字符来转换所有成员。

肯定没有具有这种专门行为的Java类,我也没有听说过知名公共图书馆的任何内容。

与您正在寻找的最接近的匹配将是一个面向函数的API,它允许使用映射函数对列表进行map转换,通过插入字符将输入字符串转换为输出字符串。

Google Guava库支持这种面向功能的列表操作。另外,请查看现在相当稳定的Java 8 Early Access,它具有此内置功能。

答案 5 :(得分:0)

这样做。

int index= list.indexOf("abc"); // Getting the position of the object.
if(index != -1){    
    String newString = new StringBuffer("abc").insert(1,"X").toString();// Modifying  the object
    list.set(index, newString ); //Updating the object in same position.
}