Set接口
不能包含重复的元素
无序:不会按照我们添加的规则输出,有底层规定的顺序输出
与数组无关
Set接口
包含HashSet,TreeSet。HashSet中包含LinkedHashSet
不能包含重复元素,有顺序
treeset输出时会自动排序,默认升序
TreeSet
//放入TreeSet中的Student类要实现Comparable接口
{
Set<Student> set = new TreeSet<>();
set.add(new Student("asd",40,95));
set.add(new Student("ijf",40,95));
set.add(new Student("kop",40,95));
set.add(new Student("jio",40,95));
set.forEach(System.out::println);
}
class Student implements Comparable<Student>{
private String name;
private int age;
private int score;
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
# 用Set如何去重?
将list添加到set中
```java
Set<String> set = new HashSet<>();
set.addAll(list);
sout(set);
Set 的实现类HashSet
- 元素不能重复
- 元素位置可能发生改变
- 无序
- 线程不安全
- 底层是哈希表
- 指定的初始化容量必须是2的n次方的形式
HashSeet<String> set = new HashSet<>();
set.add("wenrenhao");
set.forEach(System.out::println);
LinkedHashSet
LinkedHashSet是HashSet的子类。不能放重复元素
自身特点:
是有序的集合
底层数据结构:哈希表和双向链表
线程不安全的集合
Queue接口
FIFO :先进先出
Queue queue = new LinkedList();
queue.add(" ");
//获取但不移除头部元素
//NoSuchElementException 如果没有数据,抛出异常
sout(queue.element());
//获取但不移除头部元素
//如果没有数据,返回null
sout(queue.peek());
//获取并移除头部元素,没有数据返回null
sout(queue.poll());
//获取并移除头部元素,没有数据返回NoSuchElementException
sout(queue.remove());
//在数组末尾添加元素
queue.offer("pubg")