一、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接口,重写了compareTo()方法
@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方法,注意主要条件和次要条件(三元运算符)
五、案例一
总成绩可以在Student类中添加方法getSum(),也可以在主函数加。
六、案例二
Random类的用法:创建对象,对象调用方法nextInt(bound)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。