-4

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

下面是我的项目类

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

-使用java.lang.Comparable界面,如果您只想以一种方式对其进行排序。

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

于 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 回答