我有一个包含以下内容的ArrayList:[2x,5,6x]。我想摆脱包含“x”的元素,但contains()方法适用于ArrayList中的所有元素。
我的尝试:
boolean ready = false;
while(!ready){
if(first element in the array contains "x"){
remove that element
Check next element in line
}
当检查所有元素,并删除包含“x”的元素时,将ready设置为true,并停止循环。 我希望输出只是:[6]。然后将其转换为int,而不是String。
修改 我无法使用ArrayList,因为我无法改变ArrayList的内容。因此我把它改成了一个简单的数组。 该数组现在是: String [] tokens = ligning2.split(“ - | \ + | \ * | \ /”);
因此令牌数组将保持[2x,5,6x]。那么如何删除包含x的元素,使用这种数组而不是Arraylist?
答案 0 :(得分:0)
这是在调用List#removeIf
时使用lambda的绝佳机会。
例如:
List<String> list = Arrays.asList("2x", "5", "6x");
System.out.println(list); // [2x, 5, 6x]
list.removeIf(element -> element.contains("x"));
System.out.println(list); // [5]
假设List
中有多个值不包含&#34; x&#34;,您可以使用Stream
将每个元素映射到其整数值:
List<Integer> newList = list.stream()
.map(Integer::valueOf)
.collect(Collectors.toList());
整个算法可以压缩成以下内容:
List<Integer> newList = list.stream()
.filter(element -> !element.contains("x"))
.map(Integer::valueOf)
.collect(Collectors.toList());
答案 1 :(得分:0)
最简单的方法是使用Stream
。这些是在Java 8中添加的,你可以在你的情况下使用它们来过滤列表中的某些项目并在一次运行中将它们转换为整数:
List<String> elements = Arrays.asList("2x", "5", "6x");
List<Double> result = elements.stream()
.filter(entry -> !entry.contains("x"))
.map(Double::valueOf) //this assumes that all other entries are valid doubles
.collect(Collectors.toList());
答案 2 :(得分:0)
String
包含&#34; x&#34; String
,使用List
Iterator.remove();
中删除
例如:
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
String value = list.next();
if(value.contains("x"){
iterator.remove();
}
}
答案 3 :(得分:0)
例如,您可以使用迭代器:
List<String> list = Arrays.asList("Hello", "xyz", "tkx");
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
if(iter.next().contains("x")){//check if your element contain x
iter.remove();//if yes remove it
}
}
答案 4 :(得分:0)
您可以使用此程序
package com.anand;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.ListIterator;
public class ArrayListRemove {
static ArrayList<String> al=new ArrayList<>(Arrays.asList("6x","8","5x"));
public static void main(String[] args) {
Iterator<String> i=al.iterator();
while(i.hasNext())
{
if(i.next().toString().contains("x"))
{
i.remove();
}
}
ListIterator<String> li= al.listIterator();
while(li.hasNext())
{
System.out.println(li.next());
}
}
}
请让我知道您要创建一个新的整数Arraylist或只是输出整数。我会相应地做出改变