JAVA中的LinkedList集合中有字符串与int类型的数字,如何排序。

LinkedList list = new LinkedList<>();
Person a1 = new Person("张三", 75);
Person a2 = new Person("李四", 78);
Person a3 = new Person("王五", 80);
Person a4 = new Person("赵六", 90);
Collections.addAll(list,a1,a2,a3,a4);

看你排序的需求,你是要用姓名排序,还是用分数排序。

用sort函数。

public class Person1 implements Comparable < Person1 > {
    private Float height;
    private String name;

    Person1(float height) {
        this.height = height;
    }

    public Float getHeight() {
        return height;
    }

    public void setHeight(float height) {
        this.height = height;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override public int compareTo(Person1 p) {
        if (this.getHeight() < p.getHeight()) {
            return 1;

        } else if (this.getHeight() > p.getHeight()) {
            return - 1;
        } else {
            return 0;
        }
    }
}

public class Question3_1 {

    public static void main(String[] args) {
        Person1 p1 = new Person1(23.4f);
        p1.setName("Stud1");
        Person1 p2 = new Person1(2.34f);
        p2.setName("Stud2");
        Person1 p3 = new Person1(34.32f);
        p3.setName("Stud3");
        Person1 p4 = new Person1(56.45f);
        p4.setName("Stud4");
        Person1 p5 = new Person1(21.4f);
        p5.setName("Stud5");

        LinkedList < Person1 > al = new LinkedList < Person1 > ();

        al.add(p1);
        al.add(p2);
        al.add(p3);
        al.add(p4);
        al.add(p5);

        Collections.sort(al); //这里控制降序
        for (Person1 p: al) System.out.println(p.getName() + " " + p.getHeight());
    }
}

这是从小到大排序,如果要从大到小排序久用b.grade.compareTo(a.grade)

      list.sort(new Comparator<Person>() {
            @Override
            public int compare(Person a, Person b) {
                return a.getGrade().compareTo(b.getGrade());
            }
        });

按java8的流排序即可,简单又方便:

    public static void main(String[] args) {
        LinkedList list = new LinkedList<>();
        Person a1 = new Person("张三", 75);
        Person a2 = new Person("李四", 78);
        Person a3 = new Person("王五", 80);
        Person a4 = new Person("赵六", 90);
        Collections.addAll(list,a1,a2,a3,a4);
        //getFracetion 分数(具体字段以你自己定义的为准)
        List<Person> personSortFracetion = list.stream().sorted(Comparator.comparing(Person::getFracetion)).collect(Collectors.toList());
        personSortFracetion.stream().forEach(item->{
            System.out.println("排序结果为:"+item.getFracetion());
        });
    }


LinkedList list = new LinkedList<>();
        Person a1 = new Person("张三三", 79);
        Person a2 = new Person("张三三", 78);
        Person a3 = new Person("王五", 80);
        Person a4 = new Person("赵六", 90);
        Collections.addAll(list,a1,a2,a3,a4);
        
        
        Collections.sort(list,new Comparator<Person>() {
            @Override
            public int compare(Person p1, Person p2) {
                int i = p1.getName().compareTo(p2.getName());
                if(i==0) {
                    i =  p1.getAge()-p2.getAge();
                }
                return i;
            }
        });
        
        for (int i = 0; i < list.size(); i++) {
            Person p = (Person)list.get(i);
            System.out.println(p.getName()+","+p.getAge());
        }