Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有3列的表的排序数组_Java - Fatal编程技术网

Java 具有3列的表的排序数组

Java 具有3列的表的排序数组,java,Java,我有一个元素列表,希望显示如下列表: ADG BEH CFI (表格从左上到右下填充) 如果我从列表中删除“I”,我的代码就会工作。。。但很明显,我想让它适用于每种情况: List<String> beanz = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I"); String[] sortedBeanz = new String[beanz.size()]; int i = 0;

我有一个元素列表,希望显示如下列表:

ADG
BEH
CFI
(表格从左上到右下填充)

如果我从列表中删除“I”,我的代码就会工作。。。但很明显,我想让它适用于每种情况:

    List<String> beanz = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I");
    String[] sortedBeanz = new String[beanz.size()];

    int i = 0;
    while (i < beanz.size()) {

        int shift = (i * 3) / beanz.size();
        int pos = ((i * 3) - beanz.size() * shift);

        System.out.println(pos + " " + beanz.get(i));
        sortedBeanz[pos] = beanz.get(i);
        i++;
    }
List beanz=Arrays.asList(“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”);
String[]sortedBeanz=新字符串[beanz.size()];
int i=0;
而(i

我被卡住了,不知道自己做错了什么

一种巧妙的Java 8方法:

List<String> beanz = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I");
String in = String.join("", beanz);
System.out.println(in.replaceAll("(.)..", "$1"));
System.out.println(in.replaceAll(".(.).", "$1"));
System.out.println(in.replaceAll("..(.)", "$1"));

ADG
BEH
CFI
List beanz=Arrays.asList(“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”);
String in=String.join(“,beanz);
System.out.println(in.replaceAll(“(……”,“$1”);
System.out.println(in.replaceAll(“.(.”,“$1”);
System.out.println(in.replaceAll(“..(.”,“$1”);
ADG
贝赫
CFI

您可以简单地使用循环

List<String> beanz = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I");
for (int i = 0; i < beanz.size()/3; i++){
    for (int j = i; j < beanz.size(); j += 3){
        System.out.print(beanz.get(j));
    }
    System.out.println("");
}
如果需要3列视图-

List<String> beanz = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L");
int rows = beanz.size()/3;
for (int i = 0; i < beanz.size()/3; i++){
    for (int j = i; j < beanz.size(); j += rows){
        System.out.print(beanz.get(j));
    }
    System.out.println("");
}
List beanz=Arrays.asList(“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”);
String[]sortedBeanz=新字符串[beanz.size()];
int列=3;
int l=beanz.size();
l=l-(l%列);
对于(int i=0;i

如果不合适,最后一个将被剪切掉

这是一个简单但可扩展的解决方案,它将根据输入的大小创建已排序的字符立方体。它将根据输入的大小生成具有3x3或4x4等字符的立方体

这是一种弹性解决方案:

public static void sortSizeable(List<String> beanz) {
    Collections.sort(beanz);
    int cols = (int) Math.ceil(Math.sqrt(beanz.size()));
    String[][] sortedBeanz = new String[cols][cols];
    for (int i = 0; i < beanz.size(); i++) {
        int row = i / cols;
        int col = i % cols;
        sortedBeanz[col][row] = beanz.get(i);
    }
    System.out.println(Arrays.stream(sortedBeanz)
            .map(array -> Arrays.stream(array).collect(StringBuilder::new, (sb, s) -> sb.append(s == null ? "=" : s).append(" "), (sb, s) -> {} ))
            .collect(Collectors.joining("\r\n")));
}
public static void sortSizeable2(List<String> beanz) {
    Collections.sort(beanz);
    final int cols = 3; // Number of columns
    int rows = (int) Math.ceil(beanz.size() / (cols * 1.0));
    String[][] sortedBeanz = new String[rows][cols];
    for (int i = 0; i < beanz.size(); i++) {
        int row = i / rows;
        int col = i % rows;
        sortedBeanz[col][row] = beanz.get(i);
    }
    printOut(sortedBeanz);
}
这将打印出以下多维数据集或已排序的字符:

A E I M 
B F J N 
C G K O 
D H L P 

A D G 
B E H 
C F = 

A C 
B D 

A D G 
B E H 
C F I 

A F K P = 
B G L Q = 
C H M R = 
D I N = = 
E J O = = 
更新

如果您只需要3行的弹性解决方案,以下是解决方案:

public static void sortSizeable(List<String> beanz) {
    Collections.sort(beanz);
    int cols = (int) Math.ceil(Math.sqrt(beanz.size()));
    String[][] sortedBeanz = new String[cols][cols];
    for (int i = 0; i < beanz.size(); i++) {
        int row = i / cols;
        int col = i % cols;
        sortedBeanz[col][row] = beanz.get(i);
    }
    System.out.println(Arrays.stream(sortedBeanz)
            .map(array -> Arrays.stream(array).collect(StringBuilder::new, (sb, s) -> sb.append(s == null ? "=" : s).append(" "), (sb, s) -> {} ))
            .collect(Collectors.joining("\r\n")));
}
public static void sortSizeable2(List<String> beanz) {
    Collections.sort(beanz);
    final int cols = 3; // Number of columns
    int rows = (int) Math.ceil(beanz.size() / (cols * 1.0));
    String[][] sortedBeanz = new String[rows][cols];
    for (int i = 0; i < beanz.size(); i++) {
        int row = i / rows;
        int col = i % rows;
        sortedBeanz[col][row] = beanz.get(i);
    }
    printOut(sortedBeanz);
}
您将看到:

A G M 
B H N 
C I O 
D J P 
E K = 
F L = 

A D G 
B E H 
C F = 

A C = 
B D = 

A D G 
B E H 
C F I 

A G M 
B H N 
C I O 
D J P 
E K Q 
F L R

你可以用一个模函数来移动和调整位置,像这样

    int i = 0;
    int pos = 0;
    int shift =3;
    while (i < beanz.size()) {
        if (i%shift  == 0) {
            pos= i/shift;
        }
        sortedBeanz[pos] = beanz.get(i);
        System.out.println(pos+ " " + beanz.get(i));
        pos+=shift;
        i++;
    }
inti=0;
int pos=0;
int-shift=3;
而(i
输入是什么?无关:您还没有了解
循环的
吗?@LutzHorn再次查看代码。无需输入。您了解模运算符(
%
)了吗?如果您使用它,它将有助于您的代码。但是,您的示例已经排序,您的目标是选择每三个元素并继续执行某些操作(例如,将元素添加到
StringBuilder
。第三个不是字面上的第三个!使用@Andreas建议的mod运算符。我需要数组中的元素,因为另一个应用程序正在处理values@user489872,这不是你要求的!你说我要显示!如果我添加一个字母,它将变成4列la你想要3列的布局吗?例如12个字母的布局会是什么样子?我已经投了赞成票,但不管输入有多大,列的数量应该正好是3。另外,我会在
sortsiziable
方法中使用
sort
,以防万一输入还没有排序。@zlakad你是对的。问题不是这样的询问有关多维数据集的问题。我没有完全理解。我添加了排序。谢谢。@zlakad我现在为更新中预定义的列数添加了一个解决方案,这是正确的答案!尽管在第三个示例中我不太确定(问题本身不够精确)。这应该是你的回答,或者可能是
ACB
D==
。然而,我认为你做得很好,如果OP不满意,他应该自己完成任务…@zlakad再次感谢你。
public static void main(String[] args) throws IOException {
    sortSizeable2(Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"));
    System.out.println();
    sortSizeable2(Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H"));
    System.out.println();
    sortSizeable2(Arrays.asList("A", "B", "C", "D"));
    System.out.println();
    sortSizeable2(Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I"));
    System.out.println();
    sortSizeable2(Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R"));
}
A G M 
B H N 
C I O 
D J P 
E K = 
F L = 

A D G 
B E H 
C F = 

A C = 
B D = 

A D G 
B E H 
C F I 

A G M 
B H N 
C I O 
D J P 
E K Q 
F L R
    int i = 0;
    int pos = 0;
    int shift =3;
    while (i < beanz.size()) {
        if (i%shift  == 0) {
            pos= i/shift;
        }
        sortedBeanz[pos] = beanz.get(i);
        System.out.println(pos+ " " + beanz.get(i));
        pos+=shift;
        i++;
    }