ArrayList 删除除非包含字符
ArrayList remove except if contains character
Android 工作室 - 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();
例如如果我选择字母 "Ne" 我想从数组列表中删除所有条目,但包含字符字符串 "ne".
的条目除外
您可以使用流
arrayList.stream().filter(x -> x.indexOf("ne") !=-1).collect(Collectors.toList());
List <String> filtered = arrayList.stream().filter(x -> x.contains("ne")).collect(Collectors.toList());
在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());
试试这个:
Iterator<String> iter = arrayList.iterator();
while (iter.hasNext()) {
String s = iter.next();
if (s.toLowerCase().contains("ne")) iter.remove();
}
查看您的代码,我认为您最好不要首先添加它们。你实际上是在说:
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 );
}
}
Android 工作室 - 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();
例如如果我选择字母 "Ne" 我想从数组列表中删除所有条目,但包含字符字符串 "ne".
的条目除外您可以使用流
arrayList.stream().filter(x -> x.indexOf("ne") !=-1).collect(Collectors.toList());
List <String> filtered = arrayList.stream().filter(x -> x.contains("ne")).collect(Collectors.toList());
在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());
试试这个:
Iterator<String> iter = arrayList.iterator();
while (iter.hasNext()) {
String s = iter.next();
if (s.toLowerCase().contains("ne")) iter.remove();
}
查看您的代码,我认为您最好不要首先添加它们。你实际上是在说:
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 );
}
}