简短的问题。
出于某些目的,特别是在java-8
及其流中,有一些像这样的包装类很方便:
class ObjectWrapper<T> {
T obj;
boolean set(T obj) {
this.obj = obj;
return true;
}
}
使用stream().filter(...)
条件来填充自定义对象(与集合项不同)的搜索结果可能会很不错。
java-8
中是否有类似的现成课程?
编辑人们会询问使用示例。好。这是一个非常牵强的例子,但它显示了主要思想:找到奇数长度的第一个单词并保存(返回)它的长度。
List<String> collection = Arrays.asList("ab", "abc3d", "ab", "affdd");
class ObjectWrapper<T> {
T obj;
boolean set(T obj) {
this.obj = obj;
return true;
}
}
ObjectWrapper<Integer> oddWordLength = new ObjectWrapper<Integer>();
collection.stream().filter(s -> s.length() % 2 != 0 && oddWordLength.set(s.length())).findFirst();
答案 0 :(得分:3)
你的例子:
List<String> collection = Arrays.asList("ab", "abc3d", "ab", "affdd");
找到奇数长度的第一个单词并保存(返回)其长度。
一个简单的解决方案:
return collection.stream()
.filter(s -> s.length() % 2 != 0)
.mapToInt(String::length)
.findFirst()
注意,这将返回OptionalInt
,这样如果您的List
为空,则会返回OptionalInt.empty()
。
您的持有人课程没有必要。