一、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)