我有
List<String> firstName = new ArrayList<String>()
和
List<String> lastName = ArrayList<String>()
两者都以"Foo" + " " + "Bar."
我的问题是如何从 firstName 中每个元素的 lastName 和“Bar”中的每个元素中删除“Foo”?
答案 0 :(得分:3)
好吧,字符串是不可变的,所以如果要在列表中更改ALL的字符串,你真的要用新字符串替换每个列表中的字符串,所以它并不像你想象的那么难
for ( int i = 0; i < firstName.size(); i++ ) {
String [] parts = firstName.get(i).split(" ");
firstName.set( i, parts[0] );
}
for ( int i = 0; i < lastName.size(); i++ ) {
String [] parts = lastName.get(i).split(" ");
lastName.set( i, parts[1] );
}
我仍然不喜欢假装我知道两个数组都有相同的长度,所以我仍然在这里做两次工作。 Girish的回答也有效。
答案 1 :(得分:1)
您可以遍历一个列表。当迭代firstName时,拆分空格“”上的10个字符串中的每一个,并将第一个标记推回到firstName列表中。将第二个标记推送到lastName List。
for(int i=0; i < firstName.size(); i++){
String name = firstName.get(i);
String[] tokens = name.split(" ");
String first = tokens[0];
String last = tokens[1];
firstName.set(i, first); //firstName.set(i, first + " ") to keep the whitespace
lastName.set(i, last); //lastName.set(i, " " + last) to keep the whitespace
}
这应该有用,如果你说,每个List包含相同的10个元素。
答案 2 :(得分:1)
或者像这样,避免必须处理列表索引,这些列表索引可以提示某些列表实现中的性能问题,这些列表实现不保证随机访问(即LinkedList)
ListIterator<String> it = firstNames.listIterator();
while(it.hasNext()){
it.set(it.next().split(" ")[0])
}
it = lastNames.listIterator();
while(it.hasNext()){
it.set(it.next().split(" ")[1])
}