-4

インスタンス変数として,を持つItemクラスがあります。カウントに基づいてアイテムを並べ替えたい。どうすればいいのか教えてください。アイテムをソートするためにアイテム クラスで定義できるメソッドはありますか?idcountname

以下は私のアイテムクラスです

public class Item {

    private String id;
    private String count;
    private String name;

    Item() {
    }

    public String getcount() {
        return this.count;
    }

    public Item(String name) {
        this.name = name;
        this.id = "";

    }

    public Item(String id, String name) {
        this.name = name;
        this.id = id;

    }
    
    public Item(String id, String name,String count) {
        this.name = name;
        this.id = id;
        this.count=count;
    }

    public String getItemName() {
        return this.name;
    }

    public String getItemId() {
        return this.id;
    }

    public void createItem(String id, String name) {
        this.name = name;
        this.id = id;
    }

    public Item returnItems(ItemList itemset) {
        Item item = null;

        return item;
    }
}

またItemList、アイテムを保持するクラスもあります。

public class ItemList implements Iterable<Item> {

    private List<Item> hold = new ArrayList<Item>();

    ItemList(Item item) {

        // hold = new ArrayList<Item>();
        this.hold.add(item);
    }

    ItemList() {
        //throw new UnsupportedOperationException("Not yet implemented");
    }

    public List<Item> getItemList() {
        return this.hold;

    }

    public void addItems(Item item) {
        //hold = new ArrayList<Item>();
        this.hold.add(item);
    }

    @Override
    public Iterator<Item> iterator() {
        Iterator<Item> item = hold.iterator();
        return item;
    }
}
4

7 に答える 7

2

Comparableインターフェイスを実装し、並べ替え順序のロジックを記述します。

     public class Item implements Comparable<Item>{
      private String id;
      private String count;
      private String name;

      Item() {}
      ...    
      public int compareTo(Item item1) {
        return this.count.compareTo(item1.count);
      }   
    }

Collections#sortこれで、リストまたは配列をまたはで並べ替えることができますArrays#sort

于 2012-10-10T17:08:38.990 に答える
2

Comparable インターフェイスを実装する必要があります。

http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.htmlを参照してください。

于 2012-10-10T17:06:20.063 に答える
1

クラスはComparablecompareTo()メソッドを実装する必要があります。これがです。

于 2012-10-10T17:07:21.970 に答える
0

オブジェクトの並べ替えのチュートリアルを確認してください。

特に、次のことを行う必要があるかどうかを判断する必要があります。

  1. Comparableインターフェースを実装する(自然ソート用-通常の順序のコレクションなど)または
  2. 独自のコンパレータを作成します(さまざまな方法で、つまりさまざまなシナリオのさまざまなフィールドで並べ替える場合)

必要に応じて両方を実行できることに注意してください。

于 2012-10-10T17:09:14.163 に答える
0

-1つの方法でのみjava.lang.Comparable並べ替える場合は、インターフェイスを使用します。

-複数の方法java.util.Comparatorで並べ替える場合は、インターフェイスを使用します。

于 2012-10-10T17:09:22.343 に答える
0

カスタム コンパレータを作成して使用する

Collections.sort(collections, yourComparator);
于 2012-10-10T17:06:19.157 に答える
-1

Collections#sortとを使用Comparator:

List<Item> lstItem = new ArrayList<Item>();
//fill the data...
Comparator<Item> comparator = new Comparator<Item>() {
    public int compareTo(Item i1, Item i2) {
        return i1.count.compareTo(i2.count);
    }
};
Collections.sort(lstItem, comparator);
于 2012-10-10T17:10:10.800 に答える