我有一个包含例如abc
的元素列表。为了生成文档aXbc
,我在位置1插入X
。但是,列表将abc
作为一个元素,因此位置1实际上位于列表内容的第4位。所以,我的问题是,如何在此列表的中间插入并直接生成aXbc
?当然我可以浏览列表并concat
每个元素......!但是在java中没有一个直接构成这个的结构吗?
list.add("abc");
list.add(1, "X");
想要aXbc
答案 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.
}