我几天来一直在努力解决这个问题.我正在尝试使用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)