1

だから私はこのArrayListを持っています:

list.get(0) == "love"  
list.get(1) == "foo"  
list.get(2) == "make"  
list.get(3) == "links"

私が欲しいのは:

list.get(0) == "links"  
list.get(1) == "make"  
list.get(2) == "foo"  
list.get(3) == "love"

私はこれを試しましたが、動作しません:

public static void orderDescending(final ArrayList<String> list){
    Collections.sort(list, new Comparator<String>() {
        public int compare(String s1, String s2) {
            Integer i1 = list.indexOf(s1);
            Integer i2 = list.indexOf(s2);
            return i1.compareTo(i2);
        }
    });
 }
4

4 に答える 4

7

あなたはこれを行うことができます:

Collections.reverse(list);
于 2012-04-11T06:38:02.533 に答える
1

単に、

Collections.reverse(list);
于 2012-04-11T06:38:35.620 に答える
0

あなたは小さな間違いを犯しました。

「return i2 .compareTo( i1 );」を試したはずです。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Reverse {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("love");
        list.add("foo");
        list.add("make");
        list.add("links");
        System.out.println(list);
        orderDescending(list);
        System.out.println(list);
    }

    public static void orderDescending(final ArrayList<String> list) {
        Collections.sort(list, new Comparator<String>() {
            public int compare(String s1, String s2) {
                Integer i1 = list.indexOf(s1);
                Integer i2 = list.indexOf(s2);
                // return i1.compareTo(i2);
                return i2.compareTo(i1);
            }
        });
    }
}
于 2013-04-27T06:57:11.893 に答える
0

これは単純なリスト反転アルゴリズムです。アルゴリズムを気にしない場合は、Collections.reverse()を使用してください。

public static void reverse(List<String> list) {

    if (list == null) {
        return;
    }

    int size = list.size();
    int mid = list.size() / 2;

    ListIterator<String> fwd = list.listIterator();
    ListIterator<String> rev = list.listIterator(size);

    for (int i = 0; i < mid; i++) {
        String tmp = fwd.next();
        fwd.set(rev.previous());
        rev.set(tmp);
    }
}
于 2012-04-11T06:38:51.687 に答える