如何对字符串数组列表进行分组,java 8或java 11

如何对字符串数组列表进行分组,java 8或java 11,java,java-8,Java,Java 8,{用户名,顺序} 正在尝试按用户名对它们进行分组 List<String[]> orders = new ArrayList<>(); String[] o1 = {"john, apple"}; String[] o2 = {"john, Orange"}; String[] o3 = {"jane , banana"}; String[] o4 = {"jane, Oran

{用户名,顺序} 正在尝试按用户名对它们进行分组

List<String[]> orders = new ArrayList<>();
            String[] o1 = {"john, apple"};
            String[] o2 = {"john, Orange"};
            String[] o3 = {"jane , banana"};
            String[] o4 = {"jane, Orange"};
            orders.add(o1);
            orders.add(o2);
            orders.add(o3);
            orders.add(o4);
List orders=new ArrayList();
字符串[]o1={“约翰,苹果”};
字符串[]o2={“john,Orange”};
字符串[]o3={“jane,banana”};
字符串[]o4={“jane,Orange”};
订单。添加(o1);
添加(o2);
添加(o3);
订单。添加(o4);
假设我有以下命令 我想谈谈这件事

List<List<String[]>> groupedOrders = new ArrayList<>();
    groupedOrders.add(Arrays.asList(o1,o2));
    groupedOrders.add(Arrays.asList(o3,o4));
List groupedOrders=new ArrayList();
add(Arrays.asList(o1,o2));
add(Arrays.asList(o3,o4));

因此,我正在寻找的结果是groupedOrders,如上面的一个或映射中的一个,只要订单列表被分组在一起,我如何将上面的订单列表转换为groupOrders,我已经尝试使用map或streams,但无法使其工作。

我建议不要使用数组,使用自定义类:

class Order {
    String username;
    String order;
}
我省略了getter、setter、修饰符和构造函数,因为这两个字段是该类的主要组件

然后,您可以创建一个
订单列表
,在其中添加所有订单,这样就很容易按名称对订单进行分组:

Map<String, List<Order>> grouped = orders.stream()
    .collect(Collectors.groupingBy(Order::getUsername));

如果您确实想使用数组作为输入,也可以使用以下方法:

Map<String, List<String>> grouped = orders.stream()
    .collect(Collectors.groupingBy(
        Order::getUsername, 
        Collectors.mapping(Order::getOrder, Collectors.toList())
    ));
Map<String, List<String>> grouped = Arrays.stream(orders)
    .collect(Collectors.groupingBy(
        a -> a[0], 
        Collectors.mapping(a -> a[1], Collectors.toList())
    ));
Map group=Arrays.stream(订单)
.collect(收集器.groupingBy(
a->a[0],
Collectors.mapping(a->a[1],Collectors.toList())
));

注意数组
String[]o1={“john,apple”}
只有一个元素,您可能需要类似于
{“john”,“apple”}
的东西。注意引用

我还建议使用此解决方案,但可以使用阵列:

Map<String, List<String[]>> map = orders.stream()
            .collect(Collectors.groupingBy(s -> s[0]));
Map Map=orders.stream()
.collect(收集器.groupingBy(s->s[0]);

您根据哪些标准进行分组?偶数和奇数?奇数元素会发生什么?请解释哦,对不起{用户名,顺序}我正在尝试按用户名排序,这将是唯一的。数组总是2个元素长吗?是的,总是两个元素。你不应该将数组作为列表混淆。