java - 将列表转换为基于 boolean 属性的集合的最简单方法?

标签 java list loops dictionary

我有一个对象列表,每个对象都有一个 boolean “selected”属性。如果“selected”属性为真,我希望将它们放在一组中。除了通过 for 循环将每个对象添加到集合中之外,还有其他方法可以实现此目的吗?

最佳答案

对于这么简单的事情,只需编写一个循环即可完成。

如果这是您要反复实现的模式:

(未经测试,因此可能有一两个错字)

public interface Selector<T> {
    public boolean select(T t); }

public <T> Set<T> grep(Collection<T> coll, Selector<T> sel) {
    Set<T> result = new Set<T>;
    for (T item : coll)
        if (sel.select(T)) 
            result.add(T);
    return result;
}

以及调用

List<SomeClasss> input = ...;
Set<SomeClass>   output = grep(
    input, 
    new Selector<SomeClass> { 
        public boolean select(SomeClass item) {
            return some-boolean-function-of-item; // decide which items to keep here
        }
    }
);

Selector 的实现知道如何检查对象并决定是否应保留它们。

关于java - 将列表转换为基于 boolean 属性的集合的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11324994/

相关文章:

java - AlarmManager,setRepeat 但警报只显示一次

Java 代码未打印到 Eclipse 中的控制台

java - 在java中执行后关闭批处理文件

excel - 如何检测与我的选择相邻的范围内的字符串?

java - android 服务关闭后继续

r - 如何在R中的循环中找到最大值

java - 我正在尝试使用 selenium 获取页面源代码,但它在 centos 中不起作用

java - Arrays$ArrayList 无法在 java 中转换为 java.util.ArrayList

regex - 使全局环境中的对象列表与某些字符串模式匹配

c++ - 使用 std::list 和 std::shared_ptr 进行内存管理