小编Joh*_*n H的帖子

使用Streams实现Java Pivot表

我几天来一直在努力解决这个问题.我正在尝试使用Java Streams创建Pivot功能.我只需要实现SUM,COUNT,MAX,MIN和AVERAGE.对于输入,我给出了一个Pivot Column Index,一个pivot行索引数组和要计算的值.

catch是数据在List <List <Object >>中,Where对象是String,Integer或Double.但直到运行时我才知道.我必须将结果作为List <List <Object >>返回.

我在使用MAX/MIN时遇到问题(我假设AVERAGE与MAX和MIN类似)

为了在多个表值上进行数据透视,我创建了一个类来使用我的第二个groupingBy

这不会编译,我不知道要比较什么,将对象转换为int或者如果我甚至需要.我想用一个流来做这一切,但我不确定它是否可行.我做错了什么,或者我可以做不同的事情.提前致谢.

package pivot.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

public class PivotTest {

    List<List<Object>> rows = new ArrayList<List<Object>>();

    public PivotTest() throws Exception {

        rows.add(Arrays.asList(new Object[]{ "East", "Boy", "Tee", 10, 12.00}));
        rows.add(Arrays.asList(new Object[]{ "East", "Boy", "Golf", 15, 20.00}));
        rows.add(Arrays.asList(new Object[]{ "East", "Girl", "Tee", 8, 14.00}));
        rows.add(Arrays.asList(new Object[]{ "East", "Girl", "Golf", 20, 24.00}));
        rows.add(Arrays.asList(new Object[]{ "West", "Boy", "Tee", 5, …
Run Code Online (Sandbox Code Playgroud)

java pivot java-8 java-stream collectors

10
推荐指数
1
解决办法
5269
查看次数

标签 统计

collectors ×1

java ×1

java-8 ×1

java-stream ×1

pivot ×1