如何在 Java 中以对角线排序的顺序获取此列表
How do I get this List in diagonally sorted order in Java
我只想问一下如何才能实现获取二维数据列表Table? Table 按(行、列、数据)顺序...
Table Sample
因此,如果您要按对角线顺序排列 table 中的数据,您将得到类似 [(4,1,B),(4,2,B),( 5,3,A),(1,1,A),(2,2,B),(2,3,A),(2,4,B),(1,5,A)] 在列表中。
假设左下角的单元格是 (0,0),右上角的单元格是 (n,n)。然后一个单元格的两个索引的总和为您提供排序所需的对角线数。
如果两个单元格在同一条对角线上,则列索引较低的单元格应排在第一位。
最后,由于行索引是从上到下递增的,所以在使用的时候应该取反行索引。
那就是:
int aDiag = a.getCol() - a.getRow();
int bDiag = b.getCol() - b.getRow();
return aDiag != bDiag ? aDiag - bDiag : a.getCol() - b.getCol();
也就是说 - 如果对角线不同,则只使用对角线。如果它们相等,则使用列索引。
我只想问一下如何才能实现获取二维数据列表Table? Table 按(行、列、数据)顺序...
Table Sample 因此,如果您要按对角线顺序排列 table 中的数据,您将得到类似 [(4,1,B),(4,2,B),( 5,3,A),(1,1,A),(2,2,B),(2,3,A),(2,4,B),(1,5,A)] 在列表中。
假设左下角的单元格是 (0,0),右上角的单元格是 (n,n)。然后一个单元格的两个索引的总和为您提供排序所需的对角线数。
如果两个单元格在同一条对角线上,则列索引较低的单元格应排在第一位。
最后,由于行索引是从上到下递增的,所以在使用的时候应该取反行索引。
那就是:
int aDiag = a.getCol() - a.getRow();
int bDiag = b.getCol() - b.getRow();
return aDiag != bDiag ? aDiag - bDiag : a.getCol() - b.getCol();
也就是说 - 如果对角线不同,则只使用对角线。如果它们相等,则使用列索引。