如何检查ArrayList<String[]>
中是否存在特定字符串?
是否需要迭代每个项目并检查字符串或是否存在用于此目的的任何特定方法(如 ArrayList.contains())?
尝试了ArrayList.contains()但在我的情况下没有工作。
这不是ArrayList <String>
它是ArrayList<String[]>
所以这个问题不是重复的问题,而是要求这是一个好奇心是否存在任何特殊方法
答案 0 :(得分:4)
这是一个示例程序来获取你所要求的...希望它有所帮助
public static void main(String[] args) {
ArrayList<String []> a = new ArrayList<>();
String b[] = {"not here","not here2"};
String c[] = {"not here3","i'm here"};
a.add(b);
a.add(c);
for (String[] array : a) {// This loop is used to iterate through the arraylist
for (String element : array) {//This loop is used to iterate through the array inside the arraylist
if(element.equalsIgnoreCase("i'm here")){
System.out.println("found");
return;
}
}
}
System.out.println("match not found");
}
答案 1 :(得分:2)
您可以使用流轻松完成:
String contains;
List<String[]> strings;
boolean isPresent = strings.stream().flatMap(Arrays::stream).anyMatch(contains::equals);
答案 2 :(得分:1)
好吧,您需要遍历整个列表,然后遍历其中的每个数组以查找该项目。
String valToBeSearched="abc";
for(String [] arr: list)
{
for(String str: arr)
{
if(str.equals(valToBeSearched)){ // do your stuff}
}
}
答案 3 :(得分:1)
您可以使用两个for-each循环遍历ArrayList
:
import java.util.Arrays;
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<String[]> arrayList = new ArrayList<String[]>();
String[] fruit = {"Apple", "Banana"};
String[] pets = {"Cat", "Dog"};
arrayList.add(fruit);
arrayList.add(pets);
System.out.println(Arrays.deepToString(arrayList.toArray())); //[[Apple, Banana], [Cat, Dog]]
System.out.println(arrayListContains(arrayList, "Apple")); //true
System.out.println(arrayListContains(arrayList, "Orange")); //false
}
public static boolean arrayListContains(ArrayList<String[]> arrayList, String str) {
for (String[] array : arrayList) {
for (String s : array) {
if(str.equals(s)) {
return true;
}
}
}
return false;
}
}
试试here!
答案 4 :(得分:1)
使用Java 8流,您可以这样做:
public boolean containsString(List<String[]> list, String s) {
// Gives you a Stream<String[]>.
return list.stream()
// Maps each String[] to Stream<String> (giving you a
// Stream<Stream<String>>), and then flattens it to Stream<String>.
.flatMap(Arrays::stream)
// Checks if any element is equal to the input.
.anyMatch(Predicate.isEqual(s));
}
答案 5 :(得分:0)
试着看看番石榴Iterables.concat()。
它可以用来压缩Iterables的Iterable,我不确定它是否会在Iterable of Array上运行,但它只是一个小转变... 如果您可以展平列表,则可以使用&#34; contains&#34;关于结果的方法。