2013-11-20 48 views
1

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

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

aXbc

+0

您正试图插入字符串的中间。 – Masudul

+0

你可以给出一个更复杂的例子来描述插入操作之前和之后列表的状态吗? – isnot2bad

回答

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()); 
} 

输出:

[一,X,b,c]
aXbc

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

1

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

当然,如果您使用的是List,您可以创建一个Characters列表。

+2

他不会让他们感到困惑 - 他*问*如何在不手动迭代和排列每个元素的情况下使其工作。 –

+0

Marko,他在说“但是,这个列表需要abc作为一个元素,所以第1个位置在我的列表内容中位于第4个位置。”这对我来说听起来像是什么列表混淆。 – Kayaman

+0

他也在说:“当然,我可以浏览列表并将每个元素连接起来......!但是java中没有直接使用它的结构吗?”这听起来像他知道他在说什么,即使他没有以最清晰的方式表达自己。 –

0

你需要像

list.add(1, new StringBuilder(list.get(1)).insert(somePosition, "someString").toString()); 

这意味着越来越善于列表的位置字符串,并在需要的位置插入一些字符串,并把它背在同一position

0

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

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

你想要一个特殊的字符串列表,它允许通过在其中插入字符来转换所有成员。

绝对没有Java类具有这种专业化的行为,我也没有听说过任何知名的公共图书馆。

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

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

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. 
} 
+1

请解释为什么你的答案会起作用,以便其他人可以从你的答案中学习。 – ArtB