java递归查询list为true的数据
时间: 2024-10-17 21:07:03 浏览: 13
JAVA利用递归删除文件代码实例
在Java中,递归查询List中所有元素满足特定条件(比如某个属性等于true)的一种常见做法是创建一个方法,该方法会遍历列表,如果当前元素符合条件,则返回当前元素,同时对剩余元素继续调用自身,直到列表遍历完。下面是一个简单的示例,假设我们有一个List布尔类型的元素,并想找出所有值为true的元素:
```java
import java.util.ArrayList;
import java.util.List;
public class RecursiveSearch {
public static <T> T findTrue(List<T> list, Predicate<T> condition) {
if (list == null || list.isEmpty()) {
return null; // 如果列表为空则直接返回null
}
for (T element : list) {
if (condition.test(element)) { // 使用Predicate判断元素是否满足条件
return element; // 如果满足,返回当前元素
} else if (element instanceof List<?>) { // 如果元素是另一个列表,继续递归查找
T found = findTrue((List<T>) element, condition);
if (found != null) {
return found;
}
}
}
return null; // 没有找到符合条件的元素,返回null
}
// 假设我们有以下Predicate接口用于检查布尔值
interface Predicate<T> {
boolean test(T t);
}
public static void main(String[] args) {
List<Boolean> list = new ArrayList<>();
list.add(true);
list.add(false);
list.add(new ArrayList<>(Arrays.asList(true, false, true)));
Boolean result = findTrue(list, Boolean::booleanValue); // 调用方法并打印结果
System.out.println(result);
}
}
```
在这个例子中,`findTrue`方法会递归地搜索嵌套的列表,直到找到所有值为true的元素。
阅读全文