java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > LinkedHashSet和TreeSet

Java中的LinkedHashSet和TreeSet解读

作者:jtjeeeee

这篇文章主要介绍了Java中的LinkedHashSet和TreeSet解读,哈希表和链表实现的set接口哈希表决定了它元素是唯一的,而链表则保证了他是有序的(存储和取出顺序一致),元素按照一定规则排序,不是按储存时间排的,需要的朋友可以参考下

一,LinkedHashSet

二,TreeSet

三,排序

Comparator比较器

public class Student {
    public String name;
    public int chinese;
    public int math;
    public Student(){}
    public Student(String name,int chinese,int math){
        this.chinese=chinese;
        this.name=name;
        this.math=math;
    }
    @Override
    public String toString() {
        return "名字:"+name+" "+"语文:"+chinese+" "+"数学:"+math+"\t";
    }
}

测试类

import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetTest {
    public static void main(String[] args) {
//        TreeSet的有参构造,可以写一个Comparabor的实现类然后创建对象传进来,也可以直接写一个匿名内部类,因为他本身相当于接口的一个实现对象
        TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
//                按照成绩总分从低到高排
                int result=(o1.math+o1.chinese)-(o2.math+o2.chinese);
//                如果总分不同返回i是两个学生对象总成绩的差值,如果总分相同则按姓名排序(compareTo一样的话说明姓名相同,说明两个元素重复,则不会添加进去)
                int i=result==0?o1.name.compareTo(o2.name):result;
                return i;
            }
        });
        Student s1=new Student("小明",88,99);
        Student s2=new Student("小华",87,100);
        Student s3=new Student("小天",86,94);
        Student s4=new Student("小亮",83,89);
        ts.add(s1);
        ts.add(s2);
        ts.add(s3);
        ts.add(s4);
        System.out.println(ts);
    }
}

结果

到此这篇关于Java中的LinkedHashSet和TreeSet解读的文章就介绍到这了,更多相关LinkedHashSet和TreeSet内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文