【问题标题】:Sort array via item's sub-strings通过项目的子字符串对数组进行排序
【发布时间】:2011-11-10 14:01:03
【问题描述】:

我的数组包含如下所列的项目:

“item_name_1::item_description::item_value”

(因此数组中的每个项目都包含单独的数据片段,这些数据片段稍后会在“::”处拆分)

我的问题是,如何按“ITEM_VALUE”(这是一个数值)对数组进行排序,我尝试了以下方法,但没有运气:

Arrays.sort(inputArr, new Comparator<String>() {
    @Override
    public int compare(String entry1, String entry2) {
        String[] entry1Split = entry1.split("::");
        String[] entry2Split = entry2.split("::");

        return entry1Split[2].compareTo(entry2Split[2]);
    }
});

【问题讨论】:

  • 您发布的代码有什么问题?好像没问题。
  • 从性能的角度来看,每次进行比较时最差的拆分项目,将原始数组项目拆分为临时数组,然后进行排序
  • 感谢大家的建议

标签: java android arrays sorting


【解决方案1】:

你应该可以这样做:

Arrays.sort(inputArr, new Comparator<String>() {
    @Override
    public int compare(String entry1, String entry2) {
        String[] entry1Split = entry1.split("::");
        String[] entry2Split = entry2.split("::");

        return Double.valueOf(entry1Split[2]).compareTo(Double.valueOf(entry2Split[2]));
    }
});

也就是说,如果您的数值是浮点值。如果它们是整数,您可以使用Integer.valueOf 而不是Double.valueOf

【讨论】:

    【解决方案2】:

    您可能需要考虑解析数组中的字符串并为每个条目创建一个对象 - 类似于

    class Item {
    
        String value;
        String description
        Integer value;
    }
    

    这样,您将只对每个对象解析一次字符串,而不是在每次排序算法需要进行比较时多次解析。

    【讨论】:

    • 虽然评论本身很有用,但它并不能回答他的问题,因此它应该是评论,而不是答案。
    • 无法在评论中发布多行答案和示例代码。
    • 实时动态系统的缺点 - Aleks G 在我输入答案的过程中回答了这个问题。重复答案似乎没有任何意义,所以我编辑了重复的内容并留下了可以说应该是评论的内容。
    猜你喜欢
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2023-03-06
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多