检查数组中的特定元素是否包含某个String。然后删除元素

时间:2017-04-30 20:56:08

标签: java arrays string arraylist

我有一个包含以下内容的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?

5 个答案:

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

  • 使用迭代器迭代List
  • 对于每次迭代,如果当前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或只是输出整数。我会相应地做出改变