首页 > 解决方案 > 处理对数组中的数组进行洗牌

问题描述

我想对数组中的数组进行洗牌,但只有第一个数组

String[][] kaarten = {  {"G", "T","1"}, 
                        {"G", "T","2"},
                        {"G", "T","3"},
                        //green triangle
                        {"R", "T","1"},
                        {"R", "T","2"},
                        {"R", "T","3"},
                        //red triangle
                        {"B", "T","1"},
                        {"B", "T","2"},
                        {"B", "T","3"},
                        //blue triangle
                        {"G", "O","1"},
                        {"G", "O","2"},
                        {"G", "O","3"},
                        //green Oval
                        {"R", "T","1"},
                        {"R", "T","2"},
                        {"R", "T","3"},
                        //Red Oval
                        {"B", "T","1"},
                        {"B", "T","2"},
                        {"B", "T","3"},
                        //Blue Oval
                        {"G", "S","1"},
                        {"G", "S","2"},
                        {"G", "S","3"},
                        //green Square
                        {"R", "T","1"},
                        {"R", "T","2"},
                        {"R", "T","3"},
                        //Red Square
                        {"B", "T","1"},
                        {"B", "T","2"},
                        {"B", "T","3"},
                        //Blue Square
                      };

所以{"G", "T", "1"}需要保持不变。

我希望你能理解我所看到的,这有点难以解释。

标签: javaarraysprocessing

解决方案


最简单的方法是创建一个列表String[]并使用Collections.shuffle()

List<String[]> values = new ArrayList<>();
Collections.addAll(values, kaarten);
Collections.shuffle(values);
values.stream().map(Arrays::toString).forEach(System.out::println);

将显示values在不修改内部的情况下随机重新排列String[]

[G, O, 3] 
[R, T, 3]
[G, O, 2]
[R, T, 3]
[R, T, 1]
... 

推荐阅读