重写 compareTo 方法实现按年龄来排序// person对象没有实现Comparable接口,所以必须实现,这样才不会出错,才可以使treemap中的数据按顺序排列// 前面一个例子的String类已经默认实现了Comparable接口,详细可以查看String类的API文档,另外其他// 像Integer类等都已经实现了Comparable接口,所以不需要另外实现了public class Person implements Comparable<Person> {private String name;private int age;public Person(String name,int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}/*** T重写compareTo方法实现按年龄来排序*/@Overridepublic int compareTo(Person o) {if (this.age > o.getAge()) {return 1;}if (this.age < o.getAge()) {return -1;}return 0;}}
public static void main(String[] args) {TreeMap<Person,String> pdata = https://www.huyubaike.com/biancheng/new TreeMap
Output:
5-小红10-王五20-李四30-张三
2. 无序性和不可重复性的含义是什么什么是无序性?无序性不等于随机性 ,无序性是指存储的数据在底层数组中并非按照数组索引的顺序添加 ,而是根据数据的哈希值决定的 。
什么是不可重复性?不可重复性是指添加的元素按照 equals()判断时 ,返回 false,需要同时重写 equals()方法和 HashCode()方法 。
3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
HashSet
、LinkedHashSet
和TreeSet
都是Set
接口的实现类,都能保证元素唯一,并且都不是线程安全的 。HashSet
、LinkedHashSet
和TreeSet
的主要区别在于底层数据结构不同 。HashSet
的底层数据结构是哈希表(基于HashMap
实现) 。LinkedHashSet
的底层数据结构是链表和哈希表,元素的插入和取出顺序满足 FIFO(先进先出) 。TreeSet
底层数据结构是红黑树,元素是有序的,排序的方式有自然排序和定制排序 。
- 底层数据结构不同又导致这三者的应用场景不同 。
HashSet
用于不需要保证元素插入和取出顺序的场景,LinkedHashSet
用于保证元素的插入和取出顺序满足 FIFO 的场景,TreeSet
用于支持对元素自定义排序规则的场景
Queue
是单端队列,只能从一端插入元素,另一端删除元素,实现上一般遵循 先进先出(FIFO) 规则 。Queue
扩展了 Collection
的接口,根据 因为容量问题而导致操作失败后处理方式的不同 可以分为两类方法: 一种在操作失败后会抛出异常,另一种则会返回特殊值 。Queue
接口抛出异常返回特殊值插入队尾add(E e)offer(E e)删除队首remove()poll()查询队首元素element()peek()Deque
是双端队列,在队列的两端均可以插入或删除元素 。Deque
扩展了 Queue
的接口,增加了在队首和队尾进行插入和删除的方法,同样根据失败后处理方式的不同分为两类:Deque
接口抛出异常返回特殊值插入队首addFirst(E e)offerFirst(E e)插入队尾addLast(E e)offerLast(E e)删除队首removeFirst()pollFirst()删除队尾removeLast()pollLast()查询队首元素getFirst()peekFirst()查询队尾元素getLast()peekLast()事实上,
经验总结扩展阅读
- Java单例模式,看这一篇就够了
- 感恩节祝福寄语精选
- 微信支付v3接口的 官方 Java SDK
- Java函数式编程:二、高阶函数,闭包,函数组合以及柯里化
- 精选600个 冯姓女孩名字2023年属兔
- 精选600个 韩姓女孩名字2023年属兔
- 精选600个 唐姓女孩名字2023年属兔
- 精选600个 罗姓女孩名字2023年属兔
- 精选600个 马姓女孩名字2023年属兔
- 精选600个 谢姓女孩名字2023年属兔