java排序

1 篇文章 0 订阅

数组排序

数组有一个工具类Arrays,里面有一个静态方法sort(),可以实现排序,不过他只能升序。可以使用Comparator.reverseOrder进行降序。

如果自己写的引用对象想实现排序功能需要实现Comparable接口重写compareTo方法,即可排序。

用户实体类:

package com.company.sort;

import java.util.Objects;

/**
 * <br>
 * <b>类说明: </b> 学生实体类实现Comparable进行排序
 * <b>作者:   </b> Guo.shiLin
 * <b>日期:   </b> 2018\7\27 0027
 *
 * @version 1.0
 */
public class Student implements Comparable {
    private String name;
    private int no;

    public Student(String name, int no) {
        this.name = name;
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public int getNo() {
        return no;
    }

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

    public void setNo(int no) {
        this.no = no;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", no=" + no +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return no == student.no &&
                Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {

        return Objects.hash(name, no);
    }

    @Override
    public int compareTo(Object o) {
        //根据姓名进行排序,按字母顺序。
        return this.getName().compareTo(((Student) o).getName());
    }
}

数组排序代码如下:

package com.company.sort;

import java.util.Arrays;
import java.util.Comparator;

/**
 * <br>
 * <b>类说明: </b> 数组的排序
 * <b>作者:   </b> Guo.shiLin
 * <b>日期:   </b> 2018\7\27 0027
 *
 * @version 1.0
 */
public class ArraysSort {

    public static void main(String[] args) {
        Student[] student = new Student[4];
        Student student1 = new Student("A", 10);
        student[0] = student1;
        Student student2 = new Student("v",13);
        student[1] = student2;
        Student student3 = new Student("d",15);
        student[2] = student3;
        Student student4 = new Student("b", 9);
        student[3] = student4;
        System.out.println("默认:" + Arrays.toString(student));
        Arrays.sort(student);
        System.out.println("升序:" + Arrays.toString(student));
        Arrays.sort(student, Comparator.reverseOrder());
        System.out.println("降序:" + Arrays.toString(student));
    }

}

List集合排序

代码如下:

package com.company.sort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * <br>
 * <b>类说明: </b> 实现ArrayList排序
 * <b>作者:   </b> Guo.shiLin
 * <b>日期:   </b> 2018\7\27 0027
 *
 * @version 1.0
 */
public class ArrayListSort {

    public static void main(String[] args) {
        List<Student> list = new ArrayList <>();
        list.add(new Student("A", 12));
        list.add(new Student("E", 12));
        list.add(new Student("D", 12));
        list.add(new Student("B", 12));
        //调用Collections工具类中的sort排序方法。升序
        System.out.println("默认:" + list);
        Collections.sort(list);
        System.out.println("升序:" + list);
        //降序
        Collections.sort(list, Collections.reverseOrder());
        System.out.println("降序:" + list);
    }
}

HashSet排序

代码如下:

package com.company.sort;

import java.util.*;

/**
 * <br>
 * <b>类说明: </b> 利用Collections集合工具类实现排序
 * <b>作者:   </b> Guo.shiLin
 * <b>日期:   </b> 2018\7\27 0027
 *
 * @version 1.0
 */
public class HashSetSort {

    public static void main(String[] args) {
        Set<Integer> set = new HashSet <>();
        set.add(12);
        set.add(34);
        set.add(23);
        set.add(40);
        System.out.println("默认:" + set);
        //因为Collections工具类里面的排序方法里面得传个list集合,所有得先把set转为list
        List list = new ArrayList(set);
        //升序
        Collections.sort(list);
        System.out.println("升序:" + list);
        //降序
        Collections.sort(list, Collections.reverseOrder());
        System.out.println("降序:" + list);

        System.out.println("下面是自己写的一个引用对象,然后进行复制排序。");

        Set<Student> students = new HashSet <>();
        Student student = new Student("C",12);
        students.add(student);
        Student student1 = new Student("A",11);
        students.add(student1);
        Student student2 = new Student("D",56);
        students.add(student2);
        Student student3 = new Student("B",22);
        students.add(student3);
        System.out.println("默认:" + students);
        List slist = new ArrayList(students);
        Collections.sort(slist);
        System.out.println("升序:" + slist);
        Collections.sort(slist, Collections.reverseOrder());
        System.out.println("降序:" + slist);
    }

}

TreeSet排序

TreeSet实现sortedSet接口可以进行排序。默认排序是升序,也可以自定义排序方式。

代码如下:

package com.company.sort;

import java.util.Collections;
import java.util.Comparator;
import java.util.TreeSet;

/**
 * <br>
 * <b>类说明: </b> TreeSet是有序集合,默认是升序。也可以自定义排序。
 * <b>作者:   </b> Guo.shiLin
 * <b>日期:   </b> 2018\7\27 0027
 *
 * @version 1.0
 */
public class TreeSetSort {

    public static void main(String[] args) {
        TreeSet <Integer> treeSet = new TreeSet <>();
        treeSet.add(12);
        treeSet.add(23);
        treeSet.add(10);
        treeSet.add(34);
        //默认升序
        System.out.println("升序:" + treeSet);
        //自定义降序
        TreeSet <Integer> trees = new TreeSet <>((o1, o2) -> o2 - o1);
        trees.add(12);
        trees.add(23);
        trees.add(10);
        trees.add(34);
        System.out.println("降序:" + trees);


        System.out.println("下面是自己写的一个引用对象,然后进行复制排序。");
        TreeSet <Student> students = new TreeSet <>();
        Student student = new Student("C",12);
        students.add(student);
        Student student1 = new Student("A",11);
        students.add(student1);
        Student student2 = new Student("D",56);
        students.add(student2);
        Student student3 = new Student("B",22);
        students.add(student3);
        System.out.println("升序:" + students);
        TreeSet<Student> treeSet1 = new TreeSet <>((o1, o2) -> o2.getName().compareTo(o1.getName()));
        Student student4 = new Student("C",12);
        treeSet1.add(student);
        Student student5 = new Student("A",11);
        treeSet1.add(student1);
        Student student6 = new Student("D",56);
        treeSet1.add(student2);
        Student student7 = new Student("B",22);
        treeSet1.add(student3);
        System.out.println("降序:" + treeSet1);
    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java排序算法是用于对一系列数据进行排列顺序的一种算法。在Java中,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 冒泡排序是一种比较简单的排序算法,它通过对相邻的元素进行比较和交换来实现排序。该算法的时间复杂度为O(n^2),属于比较低效的排序算法。选择排序是一种简单直观的排序算法,它通过选择最小的元素并放置在已排序的部分来实现排序。该算法的时间复杂度也是O(n^2)。 插入排序是一种比较高效的排序算法,它通过将未排序的元素插入到已排序的部分来实现排序。该算法的时间复杂度也是O(n^2)。快速排序是一种递归的排序算法,它通过选取一个基准值来对数组进行分区,并对每个分区进行排序来实现最终的排序。该算法的时间复杂度为O(nlogn),是比较高效的排序算法之一。 归并排序是一种分治的排序算法,它将数组分成两个子数组,并对每个子数组进行排序,最后将两个子数组合并成一个有序数组。该算法的时间复杂度也是O(nlogn)。在实际应用中,我们通常会选择合适的排序算法来应对不同的排序需求,比如对于小规模数据可以选择简单的排序算法,对于大规模数据可以选择高效的排序算法。总之,了解Java排序算法的原理和性能表现对于编程人员来说是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值