当前位置: 首页 > 知识库问答 >
问题:

如何按前缀整数值[重复]对ArrayList进行排序

许典
2023-03-14
private void setupData(){
    ArrayList<String> hasil = new ArrayList<>();
    Set<String> keySet = chains.keySet();
    for(String key : keySet){
        float ms = Float.parseFloat(chains.get(key).get(0));
        float ma = 0;
        for(String str : chains.get(key)){
            if(str.contains(","))
                ma += Float.parseFloat(str.split(",")[1]);
        }

        float pa = ma * 100;
        String namaGangguan = SQLiteHelper.getInstance(this).getGangguan(key).getNama();
        hasil.add((int)pa + " % " + namaGangguan); // this is i want sorting
    }

    Collection.sort(hasil); //this is my code

    ArrayAdapter<String> diagnoseAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, hasil);
    listView.setAdapter(diagnoseAdapter);
}

如何搜索前面有数字值的排序arraylist,计划是我要用最大到最小的数字对listview进行排序

共有1个答案

孙钱青
2023-03-14

由于需要使用字符串前面的数字对其进行排序,因此需要提供自定义比较器Collections::sort:例如:

   Collections.sort(hasil, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            // null check needed?
            int diff = getIntValue(o2) - getIntValue(o1);
            if (diff == 0) return o1.compareTo(o2);
            return diff;
        }

        int getIntValue(String str) {
            if (str == null) return 0;
            int value = 0;
            int indx = 0;
            while (indx < str.length() && Character.isDigit(str.charAt(indx))) {
                value = value * 10 + (str.charAt(indx) - '0');
                indx++;
            }
            return value;
        }
    });



    System.out.println(hasil);

对于输入值:

List<String> list = new ArrayList<>();

    list.add("123 %kljadfd");
    list.add("1 %kljadfd");
    list.add("11123 %kljadfd");
    list.add("9 %kljadfd");

这将输出:

   [ 11123 %kljadfd,
     123 %kljadfd,
     9 %kljadfd,
     1 %kljadfd ]
 类似资料:
  • 我有一个对象类产品,如下所示 我想根据价格对产品进行分类。我的数组是 我做了 但问题是部分在error.It不能使用方法。我希望我的arrayList按照product.The价格的整数排序value.But当我将其更改为字符串类型时,我得到了,但它仍然未排序,因为字符串type.Please帮助我

  • 问题内容: 如何按“订单”键的值对该数组排序?即使这些值当前是连续的,也不会总是如此。 问题答案: 尝试使用usort,如果您仍然使用PHP5.2或更早版本,则必须首先定义一个排序函数: 从PHP 5.3开始,您可以使用匿名函数: 最后,在PHP 7中,您可以使用spaceship运算符: 要将其扩展到多维排序,如果第二个/第三个排序元素为零,请参考第二个/第三个排序元素-下文将详细说明。您也可以

  • 除了对反向列表理解进行列表理解之外,是否有一种pythonic方法按值对计数器进行排序?如果是这样,它比这更快:

  • 考虑以下数组: 我如何对这个数组进行排序,其中最高值(5)是第一个,然后是2然后是最低值(1)是最后一个?我用了这个: 但我明白了: 它改变了键,但这是错误的。我希望得到这个: 我搜索发现:按数值排序一个数组,但这没有帮助。

  • 问题内容: 我在Java中有一个双打列表,我想按降序对ArrayList进行排序。 输入如下: 输出应该是这样的 问题答案: 那会做你想要的。请记住要导入!

  • 我有一个,在用户中有姓名、姓氏、年龄等。我希望实现一个排序算法,根据用户年龄对arraylist进行排序。我搜索了很多,但只找到排序数组。