How to sort by two fields in Java?

后端 未结 16 2291
离开以前
离开以前 2020-11-22 08:40

I have array of objects person (int age; String name;).

How can I sort this array alphabetically by name and then by age?

Which algorithm would

16条回答
  •  再見小時候
    2020-11-22 09:22

    For a class Book like this:

    package books;
    
    public class Book {
    
        private Integer id;
        private Integer number;
        private String name;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public Integer getNumber() {
            return number;
        }
    
        public void setNumber(Integer number) {
            this.number = number;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "book{" +
                    "id=" + id +
                    ", number=" + number +
                    ", name='" + name + '\'' + '\n' +
                    '}';
        }
    }
    

    sorting main class with mock objects

    package books;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println("Hello World!");
    
            Book b = new Book();
    
            Book c = new Book();
    
            Book d = new Book();
    
            Book e = new Book();
    
            Book f = new Book();
    
            Book g = new Book();
            Book g1 = new Book();
            Book g2 = new Book();
            Book g3 = new Book();
            Book g4 = new Book();
    
    
    
    
            b.setId(1);
            b.setNumber(12);
            b.setName("gk");
    
            c.setId(2);
            c.setNumber(12);
            c.setName("gk");
    
            d.setId(2);
            d.setNumber(13);
            d.setName("maths");
    
            e.setId(3);
            e.setNumber(3);
            e.setName("geometry");
    
            f.setId(3);
            f.setNumber(34);
            b.setName("gk");
    
            g.setId(3);
            g.setNumber(11);
            g.setName("gk");
    
            g1.setId(3);
            g1.setNumber(88);
            g1.setName("gk");
            g2.setId(3);
            g2.setNumber(91);
            g2.setName("gk");
            g3.setId(3);
            g3.setNumber(101);
            g3.setName("gk");
            g4.setId(3);
            g4.setNumber(4);
            g4.setName("gk");
    
    
    
    
    
            List allBooks = new ArrayList();
    
            allBooks.add(b);
            allBooks.add(c);
            allBooks.add(d);
            allBooks.add(e);
            allBooks.add(f);
            allBooks.add(g);
            allBooks.add(g1);
            allBooks.add(g2);
            allBooks.add(g3);
            allBooks.add(g4);
    
    
    
            System.out.println(allBooks.size());
    
    
            Collections.sort(allBooks, new Comparator() {
    
                @Override
                public int compare(Book t, Book t1) {
                    int a =  t.getId()- t1.getId();
    
                    if(a == 0){
                        int a1 = t.getNumber() - t1.getNumber();
                        return a1;
                    }
                    else
                        return a;
                }
            });
            System.out.println(allBooks);
    
        }
    
    
       }
    

提交回复
热议问题