如何在java中对具有整数值的字符串的Arraylist进行排序

时间:2015-06-26 10:50:12

标签: java android

我有一个由整数值组成的字符串列表。我只想按升序和降序排序。

ArrayList<String> a = new ArrayList<String>();
a.add("1435536000000");
a.add("1435622400000");

System.out.println("Before : " + a);
Collections.sort(a, new ComparatorOfNumericString());
System.out.println("After : " + a);

我的ComparatorOfNumericString类是 -

public class ComparatorOfNumericString implements Comparator<String> {

    @SuppressLint("NewApi")
    @Override
    public int compare(String lhs, String rhs) {
        int i1 = Integer.parseInt(lhs);
        int i2 = Integer.parseInt(rhs);
        return Integer.compare(i1, i2);
    }

}  

任何人都知道如何在java中对具有整数值的字符串进行排序?

非常感谢!!提前!!

3 个答案:

答案 0 :(得分:2)

更好的方法是将整数/ long添加到ArrayList中,然后使用Collections.sort(a)方法对其进行排序。

如果您仍想使用String,则需要进行一些修改。请在下面找到相同的代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Input implements Comparator<String>{
    public static void main(String[] args) {
        ArrayList<String> a = new ArrayList<String>();
        a.add("1435536000000");
        a.add("1435622400000");
        a.add("1");
        a.add("10");
        a.add("20");
        a.add("15");
        a.add("1435622400010");

        System.out.println("Before : " + a);
        Collections.sort(a, new Input());
        System.out.println("After : " + a);
          }

    public int compare(String lhs, String rhs) {
    long i1 = Long.parseLong(lhs);
    long i2 = Long.parseLong(rhs);
    return (int) (i1-i2);
   }

}

答案 1 :(得分:1)

尝试使用:

Collections.sort(a);

没有任何比较器。它将按字母顺序对任何String进行排序,因此逻辑上它也将用于integer字符串。

答案 2 :(得分:-1)

您可以使用此方法对字符串进行排序。

Collections.sort(arraylist);// for ascending order
Collections.sort(arraylist, Collections.reverseOrder());// for descending order.