2

オブジェクトの ArrayList があります。

ArrayList<Item> blog_titles = new ArrayList<Item>();

String (以下のコードのタイムスタンプ)として格納されている DateTime 値である datamembers の 1 つの降順で ArrayList を並べ替えます。

public class BlogItem implements Item, Comparable<BlogItem> {

    public final String id;
    public final String heading;
    public final String summary;
    public final String description;
    public final String thumbnail;
    public final String timestamp;  // format:- 2013-02-05T13:18:56-06:00
    public final String blog_link;

    public BlogItem(String id, String heading, String summary, String description, String thumbnail, String timestamp, String blog_link) {      
        this.id = id;
        this.heading = heading;
        this.summary = summary;
        this.description = description;
        this.thumbnail = thumbnail;
        this.timestamp = timestamp;   // format:- 2013-02-05T13:18:56-06:00
        this.blog_link = blog_link;
    }

    @Override
    public int compareTo(BlogItem o) {
        // TODO Auto-generated method stub
        return this.timestamp.compareTo(o.timestamp);
    }

}

Item は汎用インターフェースです:

public interface Item { 
   // TODO Auto-generated method stub
}

今、次のように ArrayList をソートしようとしているとき:

Collections.sort(blog_titles);

次のエラー メッセージが表示されます。

Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (ArrayList<Item>). The inferred type Item is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>

上記のエラーを修正するにはどうすればよいですか?この場合、これは ArrayList をソートする正しい方法ですか?

4

2 に答える 2

3

あなたのblog_titlesリストは のリストですItem

Itemそれ自体はありませComparableBlogItem

blog_titlesとして宣言するかArrayList<BlogItem>、またはItem拡張するComparable

于 2013-05-15T11:32:25.263 に答える
1
Try this..

Collections.sort(blog_titles, new Comparator<BlogItem>() {

        @Override
        public int compare(BlogItem lhs, BlogItem rhs) 
        {
            // TODO Auto-generated method stub
            return (int)(rhs.timestamp - lhs.timestamp);
        }
    });
于 2013-05-15T11:33:40.327 に答える