Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从arraylist中的字符串中删除单词?_Java_String_Arraylist_Word - Fatal编程技术网

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

Java 如何从arraylist中的字符串中删除单词?,java,string,arraylist,word,Java,String,Arraylist,Word,我有 List firstName=new ArrayList() 及 List lastName=ArrayList() 两者都以“Foo”+“+”条的形式保存相同的10个元素 我的问题是如何从lastName中的每个元素中删除“Foo”以及从firstName中的每个元素中删除“Bar”?您可以遍历一个列表。在遍历firstName时,将空白“”上的10个字符串中的每一个拆分,并将第一个标记推回到firstName列表中。将第二个令牌推送到lastName列表中 List<Stri

我有

List firstName=new ArrayList()

List lastName=ArrayList()
两者都以
“Foo”+“+”条的形式保存相同的10个元素


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

您可以遍历一个列表。在遍历firstName时,将空白“”上的10个字符串中的每一个拆分,并将第一个标记推回到firstName列表中。将第二个令牌推送到lastName列表中

List<String> lastName = ArrayList<String>()
for(int i=0;i

如果如您所说,每个列表包含相同的10个元素,那么这应该是可行的。

您可以遍历一个列表。在遍历firstName时,将空白“”上的10个字符串中的每一个拆分,并将第一个标记推回到firstName列表中。将第二个令牌推送到lastName列表中

List<String> lastName = ArrayList<String>()
for(int i=0;i

如果如您所说,每个列表都包含相同的10个元素,那么这应该是可行的。

嗯,字符串是不可变的,所以如果您要更改列表中的所有字符串,您实际上要用新字符串替换每个列表中的字符串,所以这并不像您想象的那么困难

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
}
for(int i=0;i

我仍然不喜欢假装我知道两个数组的长度相同,所以我仍然在这里做两次工作。Girish的答案也适用。

嗯,字符串是不可变的,所以如果要更改列表中的所有字符串,实际上要用新字符串替换每个列表中的字符串,所以这并不像你想象的那么难

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
}
for(int i=0;i

我仍然不喜欢假装我知道两个数组的长度相同,所以我仍然在这里做两次工作。Girish的答案也很有效。

或者像这样,避免处理列表索引,在某些类型的列表实现中,这些索引可能会提示性能问题,而这些列表实现不保证随机访问(即LinkedList)

ListIterator it=firstNames.ListIterator();
while(it.hasNext()){
it.set(it.next().split(“”[0])
}
it=lastNames.listIterator();
while(it.hasNext()){
it.set(it.next().split(“”[1])
}

也可以这样做,避免处理列表索引,因为在某些类型的列表实现中,列表索引可能会提示性能问题,而这些列表实现不保证随机访问(即LinkedList)

ListIterator it=firstNames.ListIterator();
while(it.hasNext()){
it.set(it.next().split(“”[0])
}
it=lastNames.listIterator();
while(it.hasNext()){
it.set(it.next().split(“”[1])
}

列表
是无效代码,还是无效?您确定您的要求吗?你说“删除Foo”,但这是否包括Foo后面的空格?“删除条”是否包括句点?最好说明您希望最终结果是什么,而不是对现有结果进行更改。
List
不是有效的代码,或者是吗?您确定您的要求吗?你说“删除Foo”,但这是否包括Foo后面的空格?“删除条”是否包括句点?最好是说明你希望最终结果是什么,而不是对现有结果进行更改。这实际上与他所说的要求不符,但可能符合他的实际要求。你的代码将完全消除Foo和Bar之间的空格,而他在要求中从未提到过。如果他想保留这些空格,请对其进行编辑以考虑空格。。。请不要使用与除大小写以外的其他变量匹配的变量名。这就是为什么打字错误就像你的名字一样。设置(i,firstName)第二个名字应该是firstName的位置。。。令人困惑,不是吗?这实际上不符合他所说的要求,但可能符合他真正想要的。你的代码将完全消除Foo和Bar之间的空格,而他在要求中从未提到过。如果他想保留这些空格,请对其进行编辑以考虑空格。。。请不要使用与除大小写以外的其他变量匹配的变量名。这就是为什么打字错误就像你的名字一样。设置(i,firstName)第二个名字应该是firstName的位置。。。令人困惑,不是吗?我知道我可以使用一个循环,但我真的不喜欢假设它们的大小相同,因为我对每个数组所做的操作实际上与彼此无关。不清楚每个字符串中都有“Foo”和“Bar”。似乎这些都是示例,可以是任意长度可变的字符串。所以你需要得到这些子串的长度。这就是为什么我改用split。问题在于它不仅仅是“foo”和“bar”。名字的字长是可变的
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])
}