我有一个对象列表,每个对象都有一个 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/