除非包含字符,否则删除ArrayList

时间:2017-06-09 16:33:00

标签: java android if-statement arraylist remove-if

Android Studio - Java

如何从ArrayList中删除除包含某些字符的条目以外的所有条目,而不区分大写和小写?

String[] numbers = new String[] {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve"};

ArrayList arrayList=new ArrayList<>(Arrays.asList(numbers));


ArrayList.remove();

E.g。如果我选择字母“Ne”,我想删除arraylist中的所有条目,除了包含charachter字符串“ne”的条目。

5 个答案:

答案 0 :(得分:4)

在android中,对于非java-8

1。)遍历数组值

2。)应用toLowerCase()将值转换为小写并检查它是否包含ne,如果不是,则从列表中删除元素

for (String s: numbers) {
    if (!s.toLowerCase().contains("ne")) {
        arrayList.remove(s);
    }
}

列出元素

One
Nine

Java 8

1。)永远不要使用Raw type

2。)在filter

中应用上述逻辑
ArrayList<String> arrayList=new ArrayList<>(Arrays.asList(numbers));
List<String> non_ne = arrayList.stream()
                    .filter(x->!x.toLowerCase().contains("ne"))
                    .collect(Collectors.toList());

答案 1 :(得分:2)

您可以使用流

arrayList.stream().filter(x -> x.indexOf("ne") !=-1).collect(Collectors.toList());

答案 2 :(得分:2)

查看您的代码我认为您可能最好不要首先添加它们。你实际上在说:

String[] numbers = new String[] {"One", "Two", "Three", ...}; //array
List list = Arrays.asList(numbers) //create a list
ArrayList arrayList = new ArrayList<>(list); //create an ArrayList

//remove those not matching from the ArrayList

我更希望只添加我需要在列表中的方法:

List<String> list = new ArrayList<>(); //a LinkedList may be more appropriate 
for (String number : numbers) {
    if (number.toLowerCase().contains("ne")) {
        list.add(number );
    }
}

答案 3 :(得分:1)

List <String> filtered = arrayList.stream().filter(x -> x.contains("ne")).collect(Collectors.toList());

答案 4 :(得分:1)

试试这个:

Iterator<String> iter = arrayList.iterator();
while (iter.hasNext()) {
  String s = iter.next();
  if (s.toLowerCase().contains("ne")) iter.remove();
}