如何从arraylist中的字符串中删除单词?

时间:2012-06-09 04:56:15

标签: java string arraylist word

我有

List<String> firstName = new ArrayList<String>()

List<String> lastName = ArrayList<String>()

两者都以"Foo" + " " + "Bar."

的形式保存相同的10个元素

我的问题是如何从 firstName 中每个元素的 lastName 和“Bar”中的每个元素中删除“Foo”?

3 个答案:

答案 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])
}