从项类中排序元素

时间:2012-10-10 17:04:59

标签: java

我有一个Item类,它有id,count,name作为实例变量。我想根据计数对项目进行排序。请告诉我如何去做。我可以在我的item类中定义的任何方法来对项目进行排序。感谢

以下是我的项目类

         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;
}

}

7 个答案:

答案 0 :(得分:2)

您需要实现Comparable接口。

请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

答案 1 :(得分: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#sortArrays#sort

对您的列表或数组进行排序

答案 2 :(得分:1)

您的班级应该实施ComparablecompareTo()方法。这是一个example

答案 3 :(得分:0)

编写自定义比较器并使用

Collections.sort(collections, yourComparator);

答案 4 :(得分:0)

查看the tutorial以排序对象。

特别是你应该决定是否需要:

  1. 实现Comparable界面(用于自然排序 - 例如在正常订购的集合中)或
  2. 编写自己的Comparator(如果您要以多种不同方式排序,即在不同场景中使用不同的字段)
  3. 请注意,如果您愿意,可以同时执行这两项操作。

答案 5 :(得分:0)

- 使用java.lang.Comparable界面,如果您想以仅1路对其进行排序。

- 如果您想以多种方式对其进行排序,请使用java.util.Comparator界面。

答案 6 :(得分:-1)

使用Collections#sortComparator

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);