【问题标题】:java Android sort ArrayList<float[]> [closed]java Android sort ArrayList<float[]> [关闭]
【发布时间】:2015-04-15 03:39:16
【问题描述】:

如何根据数组中每一项的第一个维度对 ArrayList 进行排序?

示例:

【问题讨论】:

    标签: java android multidimensional-array arraylist


    【解决方案1】:
    Collections.sort(floatArray2, new Comparator() { 
    
        public int compare(float[] arg0, float[] arg1) {
            return arg0[0] == arg1[0] ? 0 : arg0[0] < arg1[0] ? -1 : 1;
        } 
    }); 
    

    【讨论】:

      【解决方案2】:

      您需要使用自定义比较器。例如:

      Comparator<float[]> byFirstElement = new Comparator<float[]>() {
          @Override
          public int compare(float[] arg0, float[] arg1) {
              return Float.compare(arg0[0], arg1[0]);
          }
      };
      Collections.sort(theArray, byFirstElement);
      

      这个实现假设两个float[] 数组实际上至少有一个元素;如果他们不这样做,比较将抛出ArrayIndexOutOfBoundsException。如果您不确定数组是否始终为非空,您的compare 函数应检查arg0.lengtharg1.length,并适当处理它们(您需要处理的三种情况是仅arg0为空,只有arg1 为空,或者两者都为空)。

      最好将 Comparator&lt;float[]&gt; 分配给班级中的 private static final。这更有效一点,因为您不需要每次使用它时都创建一个新对象;但更重要的是,它赋予了它一个好听、易于阅读的名称。

      【讨论】:

        猜你喜欢
        • 2011-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-08
        • 2014-03-20
        • 2013-02-01
        相关资源
        最近更新 更多