关于java:LinkedHashSetTreeSet自然排序Comparable接口Comparator案例

4次阅读

共计 1133 个字符,预计需要花费 3 分钟才能阅读完成。

一、LinkedHashSet 汇合

public class LinkedHashSet<E> implements Set<E>
是具体的类

  • 哈希表和链表实现的 Set 接口
  • 存入和取出的程序统一(链表个性)
  • 没有反复的元素(哈希表)

    演示:

    的确程序统一且不反复

二、TreeSet 汇合

public class TreeSet implements NavigableSet<E>
public interface NavigableSet<E> extends SortedSet<E>
public interface SortedSet<E> extends Set<E>
是具体的类

1、TreeSet() 元素 有程序,程序规定取决于构造函数

  • 若是无参结构,则 天然排序
  • 若是有参结构,则依据 指定的比拟器 进行排序
    2、 没有索引 ,不能一般 for 遍历,能够 Iterator 和加强 for
    3、与 Set<E> 有间接继承关系,因而 元素不能反复
    留神:
    汇合只能存储援用类型

如果想存储根本类型,必须用他们的包装类
例如存储整数只能用 Integer

TreeSet<Integer> it = new TreeSet<Integer>();

与存入同序

不反复

四、Comparable 接口

public interface Comparable

自定义的类应用 TreeSet 须要实现 Comparable 接口, 重写办法

public class Student implements Comparable<Student>{}
@Overwrite
public int compareTo(Student o){return 0;}

return 0; 只输入第一个元素
return 1; 输入的元素按 升序
return -1; 输入的元素
按年龄排序:

@Overwrite
public int compareTo(Student o){
    int num = this.age-o.age;// 升序
    //int num = o.age-this.age;// 降序
    return num;
}

如果年龄雷同,比拟名字
名字是 String 类型,他曾经实现了 Comparable 接口

@Overwrite
public int compareTo(Student o){
    int num = this.age-o.age;// 升序
    //int num = o.age-this.age;// 降序
    int num1 = num==0?this.name.compareTo(o.name):num;
    return num;
}

三、Comparator 比拟器

有参构造方法中接管 new comparator<E>,即 comparator 的对象
重写 compare 办法, 留神次要条件和主要条件(三元运算符)


五、案例一


六、案例二




Random 类的用法:创建对象,对象调用办法 nextInt(bound)

正文完
 0