我有一套看起来像这样:
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循环,拆分它来检查第二个值。但是,如何通过第二个值以升序将其添加到列表中?
答案 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);