-2

早上好。我有类,其中包含以下格式的数据:[int][Object]。我从未使用过类,我通常使用列表、地图,现在我不明白如何在公共类中实现它。如何按类中的字段排序?小心,我的 toString 只显示没有字段编号的字段代码。

     I would like to sort this class by size of value[Object]
( "1 1234", "2 35881", ... "7 22" --> "7 22", "1 1234", "2 35881")



        public class Record {
            private int number;
            private Object code;

         ... Getters/Setters 

        @Override
        public String toString() {
            return (String)(this.code);
        }

        }


        public class Storage
        {
            List<Record> record;
            public Storage(){

                this.record = new ArrayList<Record>();

            }

            public void addRecord(Record record) {
                this.record.add(record);
            }
            public Record getRecord(int number){
                return this.record.get(number);
            }
            public void delRecord(int number){
                this.record.remove(number);
            }

            public Integer sizeStorage(){
                return record.size();
            }

        }

    public class Start {
        public static void main(String[] args) {

    System.out.println("Start reading from Xls");
    ReaderXls read = new ReaderXls();

    Storage storageRZS =  readrzs.ReadXls("Text1obj",2,12);

    .....
            System.out.println(storageRZS.getRecord(5));
            System.out.println(storageRZS.getRecord(7));
            System.out.println(storageRZS.getRecord(10));

    2122
    189266
    244

The result should be this:
        244
        2122
        189266
4

3 回答 3

3

如果您希望以有序的方式访问记录,则需要在 Record 类中使用比较器或实现可比较。

样本:

 Collections.sort(listOfRecords, new Comparator<Record>() {
            @Override
            public int compare(Record o1, Record o2) {
                //null checks

                /*Compare the object field according to your custom logic. 
                 Here it is assumed that getObjectCodeAsInt() will return an integer equivalent of the objectCode.*/
                if(o1.getObjectCodeAsInt() > o2.getObjectCodeAsInt())
                    return 1;
                else if(o1.getObjectCodeAsInt() < o2.getObjectCodeAsInt())
                    return -1;

                return 0;
            }
        });
于 2013-08-12T05:37:24.573 回答
1

您将需要Comparator为相同的客户。阅读如何对用户定义的对象进行排序

于 2013-08-12T05:32:11.753 回答
1

我不太确定这个问题的准确性。但是,如果您希望按不同的类属性(如您所说的字段)对集合进行排序,例如列表,您可以查看Collections.sort

您需要为每个排序属性实现Comparator接口。

问候 VJ

于 2013-08-12T05:36:43.343 回答