以升序添加到列表中

时间:2016-02-28 15:21:24

标签: java arrays sorting set

我有一套看起来像这样:

func addBook(book : Book, completionHandler: (error: NSError!) -> Void) {

        let params : [String: AnyObject] = ["title": book.title!, "author": book.author!]


        Alamofire.request(.POST, booksEndpoint, parameters: params, encoding: .JSON)
            .responseJSON { response in
             ...
             ...

我想将其附加到按中间值排序的列表中。每一行都是列表中的一个元素。 我可以做一个for循环,拆分它来检查第二个值。但是,如何通过第二个值以升序将其添加到列表中?

2 个答案:

答案 0 :(得分:0)

您可以使用Collections.sort与自定义Comparator对列表中的项目进行排序,例如:

    String[] lines = ("    \"ABZ\", 703, \"AFG\"\n" +
            "    \"ACC\", 5212, \"ABC\"\n" +
            "    \"AES\", 1142, \"DEF\"\n" +
            "    \"AGP\", 1883, \"IHK\"").split("\n");

    List<String> sorted = Arrays.asList(lines);
    Collections.sort(sorted, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            return Integer.compare(extractMiddlePart(o1), extractMiddlePart(o2));
        }

        int extractMiddlePart(String line) {
            return Integer.parseInt(line.split(", ")[1]);
        }
    });

答案 1 :(得分:0)

覆盖Comparable接口中的compareTo方法。它比较值并返回一个int(-1,0,1),它告诉值是否比较小于,等于或大于。

    a.compareTo(b);

如果您的类对象具有自然顺序,请实现Comparable接口并定义此方法。 ^

或者您可以覆盖Comparator界面中的比较方法。它比较两个对象的值。这是作为Comparator接口的一部分实现的,典型的用途是定义一个或多个实现它的小实用程序类,传递给sort()等方法或者通过排序数据结构来使用。我会将它用于多种比较情况

    compare(a,b);