Q.1)嗨,java流的groupingby可以使自己的数组可变吗?
这是实体
public class Test {
private int id;
private int itemId;
private int[] itemIds;
private boolean filter;
}
这是测试列表样本
{
test(id=1, itemId=1)
test(id=1, itemId=2)
test(id=1, itemId=3)
test(id=2, itemId=5)
test(id=2, itemId=11)
}
我想test.id分组
{
test(id=1, itemIds=[1,2,3])
test(id=2, itemIds=[5,11])
}
那我该怎么办?
tests.stream().collect(Collectors.groupingBy(Test::getId), ?, ?);
Q.2)如何合并下面两个流代码?
tests.stream().filter(Test::isFilter).anyMatch(t -> {throw new Exception;});
tests.stream().collect(Collectors.groupingBy(Test::getId, ?, ?); // Q1 result
关于这个。。?
tests.stream().filter(Test::isFilter).anyMatch(t -> {throw new Exception;}).collect(Collectors.groupingBy(Test::getId, ?, ?);
Q3)在Q1以上,Q2的流代码的性能优于java的for语法?
提前感谢。:)
@谢谢你的回答!
谢谢你的回答,这是我的解决方案
tests.stream()
.peek(t -> {if (Test::isFilter) throw new Exception();})
.collect(Collectors.groupingBy(Test::getId, Collectors.mapping(Test::getItemId, Collectors.toSet())))
.forEach((id, itemIdSet) -> {
if (!somBusiness(id, itemIdSet)) {
throw new Exception();
}
};
你认为呢,我的解决方案。我担心性能低下。
无论如何,我的知识已经升级了!非常感谢。:)
对于分组,假设Test(int id, int itemId, int[]itemIds)
等构造函数和流畅的getter,例如id()
、itemId()
和itemIds()
您可以通过以下方式取消数据展平:
List<Test> unflattenedTests = tests.stream()
.collect(Collectors.groupingBy(Test::id))
.entrySet().stream().map(e -> new Test(
e.getKey().intValue(),
0,
e.getValue().stream().mapToInt(Test::itemId).toArray()
))
.collect(Collectors.toList());
至于合并你的过滤器
List<Test> unflattenedTests = tests.stream()
.peek(t -> { if (t.isFilter()) throw new RuntimeException(); })
.collect(...
问题内容: 我想知道是否存在一种实现类似于map getter的功能的方法:它返回返回值作为第一个参数,(可选地分配)第二个值作为第二个参数。因此,我需要可以通过以下方式调用的函数: 问题答案: 不,它无法完成,唯一的选择是返回一个指针并检查它是否为nil。
问题内容: 直到今天,我还没有真正考虑过这一点,但是在网上搜索之后,我什么都没找到。也许我不是在搜索中说正确的话。 给定一个数组(是否具有多个维度): 当var_dumped时: 面临的挑战是:将数组重新编译为适用于PHP的可用数组的最佳优化方法是什么?就像一个功能。数据是在浏览器中作为输出全部显示在一行上,还是包含换行符作为输出到终端。 这只是正则表达式的问题吗?还是有其他方法?我正在寻找创造力
问题内容: 除了使用关键字调用构造函数时,Java语言中的语句可以返回值的确切情况是什么? 例: 如果我没记错的话,如果它是一个非函数原语,将被返回。否则返回。这个对吗? 换句话说,什么值可以引起? 问题答案: 确切的条件在内部属性上进行了描述,该属性由操作员使用: 来自ECMA-262第3条。版本规格: 13.2.2 调用对象的属性时,将执行以下步骤: 创建一个新的本机ECMAScript对象。
问题内容: java中有什么方法可以返回新数组而不先将其分配给变量?这是一个例子: 我想做这样的事情,但是不起作用: 问题答案: 即使不将其分配给变量,您仍然需要创建该数组。试试这个: 您的代码示例无效,因为编译器一方面仍然需要知道要通过静态初始化创建的类型。
问题内容: 说我有以下代码: 在这种情况下,有什么办法可以使调用返回错误? 我想知道,部分原因是出于好奇,另一部分是考虑是否需要担心该错误检查。 问题答案: 由于任何有效值都是有效键,而且也是JSON中的有效值(有关详细信息,请参阅JSON键名中的哪些字符有效/无效?,因此从理论上讲,它不会返回任何错误。 如果发生内存不足错误,则不会返回错误,您的应用将终止并显示错误代码。 由于Go将值存储为其U
问题内容: 很多人说评论中的要求太多,这让我犹豫不决,但是我仍然没有在他们的答案中找到解决方案,主要是因为(1)他们通常使用jQuery,而(2)问题通常包含我不理解的技术。 我有一个函数,里面有一个变量。变量被分配了一个功能。我敢肯定,这个概念不是AJAX独有的,但这是我正在使用的上下文(如果有区别的话)。 我想将变量传递给函数。但是,由于没有原始函数声明,如何指定参数?我能做到吗? 问题答案: