Java 找到具有特定字符的元素后,从ArrayList中删除元素
我有一个包含许多字符串的ArrayList,我希望能够遍历ArrayList内容,搜索包含分号的字符串。找到分号后,我想删除所有的字符串,包括分号字符串和分号字符串之后的字符串 所以,Java 找到具有特定字符的元素后,从ArrayList中删除元素,java,Java,我有一个包含许多字符串的ArrayList,我希望能够遍历ArrayList内容,搜索包含分号的字符串。找到分号后,我想删除所有的字符串,包括分号字符串和分号字符串之后的字符串 所以, this,is,an,arra;ylist,字符串 将成为: 这是一个 我觉得这是一件非常简单的事情,但由于某种原因(可能是疲劳),我不知道该怎么做 这是到目前为止我的代码 public String[] removeComments(String[] lineComponents) {
this,is,an,arra;ylist,字符串
将成为:
这是一个
我觉得这是一件非常简单的事情,但由于某种原因(可能是疲劳),我不知道该怎么做
这是到目前为止我的代码
public String[] removeComments(String[] lineComponents)
{
ArrayList<String> list = new ArrayList<String>(Arrays.asList(lineComponents));
int index = 0;
int listLength = list.size();
for(String str : list)
{
if(str.contains(";"))
{
}
index++;
}
return lineComponents;
}
public String[]删除组件(String[]行组件)
{
ArrayList=新的ArrayList(Arrays.asList(lineComponents));
int指数=0;
int listLength=list.size();
for(字符串str:list)
{
if(str.contains(;))
{
}
索引++;
}
返回线组件;
}
首先,我认为您混淆了数组和数组列表String[]
是字符串数组,而ArrayList
是字符串数组列表。考虑到这些不同,如果需要,您应该阅读Array和ArrayList文档
然后,要按照ArrayList方法解决您的问题,您可以按照以下步骤操作。也许这不是最好的方法,但它会起作用
public List<String> removeComments(List<String> lineComponents, CharSequence finding)
{
ArrayList<String> aux = new ArrayList<String>();
for(String str : lineComponents)
{
if(str.contains(finding))
break;
else
aux.add(str);
}
return aux;
}
public List removeComments(列出lineComponents、字符序列查找)
{
ArrayList aux=新的ArrayList();
用于(字符串str:lineComponents)
{
if(str.contains(finding))
打破
其他的
辅助添加(str);
}
返回aux;
}
这在Java 9中变得微不足道:
public String[] removeComments(String[] lineComponents) {
return Arrays.stream(lineComponents)
.takeWhile(s -> !s.contains(";"))
.toArray(String[]::new);
}
我们只需从您的
字符串[]lineComponents
中形成一个流
,并获取元素,直到找到分号为止。它会自动排除带有分号的元素及其后面的所有内容。最后,我们将其收集到一个字符串[]
这个示例只是为了提高性能,并带回我以前最喜欢的arraycopy
:
public String[] removeComments(String[] lineComponents) {
int index = -1;
for (int i = 0; i < lineComponents.length; i++) {
if ( lineComponents[i].contains(";") ) {
index = i;
break;
}
}
if (index == -1) return lineComponents;
return Arrays.copyOf(lineComponents, index);
}
public String[]删除组件(String[]行组件){
int指数=-1;
对于(int i=0;i
可能的重复(已接受的答案包含和示例集合#removeIf
),如果所有元素都包含分号,则此选项有效。因为arraylist中只有一个字符串包含分号。我想删除该字符串及其后的所有字符串,然后,我会找到第一个匹配元素的索引,然后使用ArrayList#subList
创建从指定的索引
到列表末尾的所有元素的子列表
,并使用ArrayList#removeAll
删除我们在Java8中也应该能够做到的所有可能的重复:)@YogenraiJava8没有流#takeWhile
,但仍然有办法复制它。