Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
List 对列表的多个子列表进行排序以创建新列表,Dart_List_Sorting_Flutter_Dart_Sublist - Fatal编程技术网

List 对列表的多个子列表进行排序以创建新列表,Dart

List 对列表的多个子列表进行排序以创建新列表,Dart,list,sorting,flutter,dart,sublist,List,Sorting,Flutter,Dart,Sublist,我试图根据一个属性对整个列表进行排序。之后,我想根据第二个属性对该列表进行排序,但以4为一组。所以,在对列表进行一次排序之后,我想查看前4个位置,并根据第二个属性仅对这4个位置进行排序-然后继续下4个位置,并再次对其进行排序,依此类推 这就是我到目前为止所做的: class myElements { int Position; String text; int Top; int Left; myElements(int Position, String text, int

我试图根据一个属性对整个列表进行排序。之后,我想根据第二个属性对该列表进行排序,但以4为一组。所以,在对列表进行一次排序之后,我想查看前4个位置,并根据第二个属性仅对这4个位置进行排序-然后继续下4个位置,并再次对其进行排序,依此类推

这就是我到目前为止所做的:

class myElements {
  int Position;
  String text;
  int Top;
  int Left;


  myElements(int Position, String text, int Top, int Left){
    this.Position = Position;
    this.text = text;
    this.Top = Top;
    this.Left = Left;
  }
}
然后根据“顶部”进行第一次排序:

 Comparator<myElements> TextComparator = (a, b) => a.Top.compareTo(b.Top);
      FirstList.sort(TextComparator);
comparatortextparator=(a,b)=>a.Top.compareTo(b.Top);
排序(TextComparator);
这就是我被困的地方。我尝试再次对列表进行排序,但只按4人一组进行排序-这次是按“左”排序:

   for (int i = 0; i < FirstList.length; i += 4) {
          Comparator<myElements> TextComparator2 = (a, b) =>
              a.Left.compareTo(b.Left);


          newList.addAll(FirstList.sublist(i, i + 3).sort(TextComparator2)); //this line does not work
        }
for(int i=0;i
a、 左。与(b.左)相比;
newList.addAll(FirstList.sublist(i,i+3).sort(textcomarator2));//此行不起作用
}
我想我在尝试访问已排序的子列表时被卡住了:
(FirstList.sublist(I,I+4).sort(textcomarator2)
。如果我可以将这些添加到新列表中,它应该可以工作。 然而,任何其他建议都是非常受欢迎的

非常感谢

newList.addAll(FirstList.sublist(i,i+3).sort(textcomarator2));//此行不起作用
您的代码几乎是正确的。您的想法是正确的,但您最终尝试在一行代码中执行太多操作

稍微细分一下,您的代码相当于:

var sublist=FirstList.sublist(i,i+3);
newList.addAll(sublist.sort(…);//不起作用
这不起作用,因为它不返回值。它改变列表,而不是返回新列表

如果您改为:

var sublist=FirstList.sublist(i,i+3);
sublist.sort();
newList.addAll(子列表);
此外,使用独占的结束索引。如果要创建包含4个元素的子列表,则需要使用
子列表(i,i+4)

 Comparator<myElements> TextComparator = (a, b) => a.Top.compareTo(b.Top);
      FirstList.sort(TextComparator);
   for (int i = 0; i < FirstList.length; i += 4) {
          Comparator<myElements> TextComparator2 = (a, b) =>
              a.Left.compareTo(b.Left);


          newList.addAll(FirstList.sublist(i, i + 3).sort(TextComparator2)); //this line does not work
        }