Stream.flatMap()
操作将
a, b, c
转换为包含每个输入元素的零个或多个元素的流,例如。
a1, a2, c1, c2, c3
是否有相反的操作将几个元素分批添加到一个新的元素中?
它存在吗?我可以用任何方式模拟它吗?
IntStream.range(0, 10)
.mapToObj(n -> IntStream.of(n, n / 2, n / 3))
.reduce(IntStream.empty(), IntStream::concat)
.forEach(System.out::println);
如您所见,元素也映射到Streams,然后连接成一个大流。
你可以绕过去。请参见以下示例:
Stream<List<String>> stream = Stream.of("Cat", "Dog", "Whale", "Mouse")
.collect(Collectors.collectingAndThen(
Collectors.partitioningBy(a -> a.length() > 3),
map -> Stream.of(map.get(true), map.get(false))
));
最后,我弄清楚了,可以说平贴图
是它自己的“逆”。我监督了平贴图
不一定会增加元素的数量。它还可以通过为某些元素发出空流来减少元素的数量。为了实现按组操作,平贴图
调用的函数需要最小的内部状态,即最近的元素。它要么返回一个空流,要么在组的末尾返回简化为组的代表。
这是一个快速实现,如果传入的两个元素不属于同一个组,即它们之间是组边界,则group边境
必须返回true
。组合器
是将例如(1, a)、(1, a)、(1, a)组合成(3, a)的组函数,前提是您的组元素是元组(int, string)。
public class GroupBy<X> implements Function<X, Stream<X>>{
private final BiPredicate<X, X> groupBorder;
private final BinaryOperator<X> combiner;
private X latest = null;
public GroupBy(BiPredicate <X, X> groupBorder,
BinaryOperator<X> combiner) {
this.groupBorder = groupBorder;
this.combiner = combiner;
}
@Override
public Stream<X> apply(X elem) {
// TODO: add test on end marker as additonal parameter for constructor
if (elem==null) {
return latest==null ? Stream.empty() : Stream.of(latest);
}
if (latest==null) {
latest = elem;
return Stream.empty();
}
if (groupBorder.test(latest, elem)) {
Stream<X> result = Stream.of(latest);
latest = elem;
return result;
}
latest = combiner.apply(latest, elem);
return Stream.empty();
}
}
但是有一个警告:要发布整个流的最后一组,必须将结束标记作为流中的最后一个元素粘住。上面的代码假定它是null
,但可以添加一个额外的end-mark-tester。
我无法想出一个不依赖终点标记的解决方案。
此外,我也没有在传入和传出元素之间进行转换。对于唯一操作,这只是工作。对于计数操作,前一步必须将单个元素映射到计数对象。
leetcode问题(https://leetcode.com/problems/reverse-integer/description/)请求反转一个整数,这很简单,但是如果有溢出,希望用户返回0。使用long也很简单,因为您可以检查它是否大于整数。java中的MAX_INT或MIN_INT。但如果只允许32位整数,如何实现这一点? 显示了以下解决方案: 我不明白为什么会这样。为什么“反转”操作
问题内容: 如何反转a的结果?也就是说,在给定我希望引用的字符串的情况下,如何获得一个“类似于Unix shell的” 引用字符串? 更新0 我找到了一个Python错误,并在此处提出了相应的功能请求。 问题答案: 我们现在(3.3)有一个shlex.quote函数。只是移动和记录了文档(使用代码仍然可以使用)。有关整个讨论,请参见http://bugs.python.org/issue9723。
问题内容: 有人可以告诉我反向关系是什么意思吗?我已经开始使用Django,并且在文档的很多地方都看到了“反向关系”。到底是什么意思?为什么有用?它与related_name有什么关系? 问题答案: 这是有关related_name的文档 假设你有2个模型 现在,你可以从配置文件对象执行操作。但是,如果要给配置文件对象指定对象,该怎么做?多数民众赞成在哪里或进来。 Django默认情况下为你提供一
所谓反射,是java在运行时进行自我观察的能力,通过class、constructor、field、method四个方法获取一个类的各个组成部分。 在Java运行时环境中,对任意一个类,可以知道类有哪些属性和方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于反射机制。
我有一个对象,“item”,字段为:int:id string:prices 字符串prices包含一个或多个由逗号分隔的价格值。 getStoresaIntList()从对象中的字符串价格返回价格值列表。 以上当然不是我想要的。
问题内容: __MySql中的 LIKE 运算符用于查找包含我们的查询文本的行,例如: 将会返回,等等。 如果我需要相反-找到那些行 所载 在我们的查询文本?例如,我给它并希望它从该字符串中可以找到的表中查找所有名称。 怎么做? 问题答案: 这是您可以实现所描述内容的方法: