Java:集合,對列表(List)中的數據(整型、字符串、日期等)進行排序(正序、倒序)的方法;字符串按照整型排序的方法


1. 要求

對List列表中的數據進行排序(正序、倒序),列表中的數據包括:整型(Integer)、字符串(String)、日期(Date)等。對於字符串,要求允許對它按照整型進行排序。

2. 實現思路

1. 對於整型、字符串、日期等數據,可以直接調用Collections.sort方法實現排序(正序、倒序)。

2. 對於字符串按照整型排序,可以寫一個類實現Comparable接口,在compare方法中將字符轉換為整型進行比較;然后再調用Collections.sort的方法,傳進一個Comparator來實現。

3. 實現代碼

package com.clzhang.sample.collections;

import java.util.*;

public class CollectionSortTest {
    // 字符串按照整型排序比較器
    static class Str2IntComparator implements Comparator<String> {
        private boolean reverseOrder; // 是否倒序
        public Str2IntComparator(boolean reverseOrder) {
            this.reverseOrder = reverseOrder;
        }
        
        public int compare(String arg0, String arg1) {
            if(reverseOrder) 
                return Integer.parseInt(arg1) - Integer.parseInt(arg0);
            else 
                return Integer.parseInt(arg0) - Integer.parseInt(arg1);
        }
    }

public static void main(String[] args) throws Exception { // 生成測試數據 List<String> list = new ArrayList<String>(); list.add("1001"); list.add("1002"); list.add("1003"); list.add("1"); list.add("2"); list.add("3"); list.add("11"); list.add("12"); list.add("13"); // 整型、字符串、日期都是類似的操作;下面只給出字符串的示范 System.out.println("當前順序..."); System.out.println(list); Collections.sort(list); System.out.println("默認排序后..."); System.out.println(list); Collections.sort(list, Collections.reverseOrder()); System.out.println("倒序后..."); System.out.println(list); Collections.sort(list, new Str2IntComparator(false)); System.out.println("按整型排序后..."); System.out.println(list); Collections.sort(list, new Str2IntComparator(true)); System.out.println("按整型倒序后..."); System.out.println(list); } }

輸出:

當前順序...
[1001, 1002, 1003, 1, 2, 3, 11, 12, 13]
默認排序后...
[1, 1001, 1002, 1003, 11, 12, 13, 2, 3]
倒序后...
[3, 2, 13, 12, 11, 1003, 1002, 1001, 1]
按整型排序后...
[1, 2, 3, 11, 12, 13, 1001, 1002, 1003]
按整型倒序后...
[1003, 1002, 1001, 13, 12, 11, 3, 2, 1]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM