0
0

More than 1 year has passed since last update.

Collection.sortを勉強するその2

Posted at

original classを定義してsortする。
デフォルトはsorteditemに定義したcompareToでソートされる。
comparatorを切り替えることによりsort順をコントロールできる

public class Outer {
    public static void main(String[] args) {
        Outer o = new Outer();
        SortedItem s = o.new SortedItem("sato",1);
        List<SortedItem> sl = new ArrayList();
        sl.add(o.new SortedItem("aoyama",3));
        sl.add(o.new SortedItem("yamada",2));
        sl.add(o.new SortedItem("sato",1));
        Collections.sort(sl);   //name,ascending
        for(SortedItem si : sl) {
            System.out.println(si.name + ":" + si.price);
        }
        System.out.println("---------------------");
        Comparator c = o.new DecendingStringComparator();
        Collections.sort(sl,c);    //name,decending
        for(SortedItem si : sl) {
            System.out.println(si.name + ":" + si.price);
        }
        System.out.println("---------------------");
        c = o.new DecendingIntComparator();
        Collections.sort(sl,c);    //price,decending
        for(SortedItem si : sl) {
            System.out.println(si.name + ":" + si.price);
        }
    }
    class DecendingIntComparator implements Comparator<SortedItem> {
        @Override
        public int compare(SortedItem s1,SortedItem s2) {
            return new Integer(s2.price).compareTo(new Integer(s1.price));
        }
    }
    class DecendingStringComparator implements Comparator<SortedItem> {
        @Override
        public int compare(SortedItem s1,SortedItem s2) {
            return s2.name.compareTo(s1.name);
        }
    }
    class SortedItem implements Comparable<SortedItem> {
        String name;
        int price;
        SortedItem(String name, int price) {
            this.name = name;
            this.price = price;
        }
        @Override
        public int compareTo(SortedItem s) {
            return name.compareTo(s.name);
        }
    }
}
aoyama:3
sato:1
yamada:2
---------------------
yamada:2
sato:1
aoyama:3
---------------------
aoyama:3
yamada:2
sato:1
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0