我想比較兩個字串陣列(相同大小),并根據索引檢查 mainArray 是否包含 subArray 中的元素;
public static void main(String[] args) {
List<String> mainArray = Arrays.asList("Red book", "Yellow bird", "Green sky");
List<String> subArray = Arrays.asList("Red", "Yellow", "Green");
boolean flag = false;
for (int i = 0; i < mainArray.size(); i ) {
flag = mainArray.get(i).contains(subArray.get(i));
if(!flag){
break;
}
}
}
//returns true
這看起來很丑陋是哪里有使用 stream.filter 或其他東西的解決方案?
uj5u.com熱心網友回復:
無論兩個陣列(實際上Lists在您的情況下)大小相等,這都將起作用。
- 首先
stream是 mainArray。 - 然后子
flatMap陣列 filtermainArray 字串包含 subArray 字串之一的那些情況。- 計算成功并回傳它是否等于主陣列大小。
boolean flag = mainArray.stream()
.flatMap(str -> subArray.stream()
.filter(sa -> str.contains(sa)))
.count() == mainArray.size();
這是一個使用單個sub Array和多個的演示main arrays
List<String> mainArray1 =
List.of("Red book", "Purple bird", "Blue sky");
List<String> mainArray2 = List.of("Red book", "Blue bird",
"Blue sky", "Violet flower");
List<String> mainArray3 = List.of("Red book", "Blue bird");
List<String> mainArray4 =
List.of("Blue book", "Blue bird", "Blue sky");
List<String> mainArray5 = List.of("Red book", "Purple color");
List<String> mainArray6 = List.of("Red book", "Blue bird",
"Blue sky", "Orange orange");
List<List<String>> lists = List.of(mainArray1, mainArray2,
mainArray3, mainArray4, mainArray5, mainArray6);
List<String> subArray = List.of("Red", "Yellow", "Blue",
"Orange", "Violet", "Green");
int i = 1;
for (List<String> mainArray : lists) {
boolean flag = mainArray.stream()
.flatMap(str -> subArray.stream()
.filter(sa -> str.contains(sa)))
.count() == mainArray.size();
System.out.printf("mainArray%d %b%n", i , flag);
}
印刷
mainArray1 false
mainArray2 true
mainArray3 true
mainArray4 true
mainArray5 false
mainArray6 true
uj5u.com熱心網友回復:
我找到了這個解決方案
IntStream.range(0, mainArray.size()).allMatch(i -> mainArray.get(i).contains(subArray.get(i)));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367489.html
