如何排序这个列表?

Mel*_*lon 2 java sorting

我有一个String列表

ArrayList<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

每个项目:

list.add(week+" "+year);
Run Code Online (Sandbox Code Playgroud)

在哪里weekyear是整数.

如何将此列表按升序排序?

小智 10

我建议创建一个包含所需数据并实现可比性的数据结构.

class WeekOfYear implements Comparable<WeekOfYear> {
    private int week ;
    private int year ;
    public WeekOfYear(int week, int year) {
        this.week = week ;
        this.year = year ;
    }
    /**
     * ...
     */
    public int compareTo(WeekOfYear other) {
        int delta = this.year - other.year ;

        return (int)Math.signum(
                delta != 0 ? delta : (this.week - other.week));
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder() ;
        builder.append(week > 9 ? "" : "0") ;
        builder.append(week).append(" ") ;
        builder.append(year) ;

        return builder.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

List<WeekOfYear> weeks ;
weeks = new ArrayList<WeekOfYear>();
Collections.sort(weeks) ;
Run Code Online (Sandbox Code Playgroud)


sta*_*ker 5

您需要编写一个比较器,它将每周和每年分开,比较前一周的年份(如果年份字段相等).顺便说一句你应该把一周和一年放在一个物体中以避免分裂.