从头认识java-15.5 使用LinkedHashSet须要注意的地方
JAVA 注意 认识 地方 从头 使用 须要
2023-09-11 14:20:45 时间
再接着上一个章节。我们来聊一下使用LinkedHashSet须要注意的地方。
LinkedHashSet特点:
(1)元素是有顺序的
(2)元素是不反复的
(3)底层数据结构是依照链表的结构存储的
(4)须要又一次hashcode和equals方法
样例:(我们再次改动上一章节的代码)
package com.ray.ch15; import java.lang.reflect.InvocationTargetException; import java.util.LinkedHashSet; import java.util.Set; public class Test<T> { public static <T> Set<T> fill(Set<T> set, Class<T> type) throws InstantiationException, IllegalAccessException, IllegalArgumentException, SecurityException, InvocationTargetException, NoSuchMethodException { for (int i = 0; i < 10; i++) { set.add(type.getConstructor(int.class).newInstance(i)); } return set; } public static <T> void test(Set<T> set, Class<T> type) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { fill(set, type); fill(set, type); fill(set, type); System.out.println(set); } public static void main(String[] args) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { test(new LinkedHashSet<TreeType>(), TreeType.class); test(new LinkedHashSet<SetType>(), SetType.class); test(new LinkedHashSet<HashType>(), HashType.class); } } class SetType { private int id = 0; public int getId() { return id; } public void setId(int id) { this.id = id; } public SetType(int i) { id = i; } @Override public String toString() { return id + ""; } @Override public boolean equals(Object obj) { return obj instanceof SetType && (id == ((SetType) obj).id); } } class HashType extends SetType { public HashType(int i) { super(i); } @Override public int hashCode() { return getId(); } } class TreeType extends HashType implements Comparable<TreeType> { public TreeType(int i) { super(i); } @Override public int compareTo(TreeType o) { if (o.getId() > getId()) {// 排序 return -1; } else { if (o.getId() == getId()) {// 去重 return 0; } else { return 1; } } } }
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
注意:在TreeType里面的Comparable接口是没什么用的。
总结:我们这一章节简单展示了使用LinkedHashSet须要注意的地方。
这一章节就到这里,谢谢。
-----------------------------------
相关文章
- [Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常
- java基础知识回顾之接口
- java:类集操作总结
- Java实现 LeetCode 363 矩形区域不超过 K 的最大数值和
- java实现第九届蓝桥杯三角形面积
- java实现第六届蓝桥杯立方体自身
- Java实现 蓝桥杯VIP 算法提高 质数的后代
- Java实现 蓝桥杯VIP 算法训练 判定数字
- Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- java微信公众号JSAPI支付以及所遇到的坑
- java多线程 -- 线程八锁
- 【JAVA】Java 异常中e的getMessage()和toString()方法的异同
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- 【Java】java使用反射访问对象方法和成员变量
- java基础:ThreadLocal入门demo
- Atitit.遍历图像像素点rgb java attilax总结
- 华为OD机试 - 开心消消乐(Java & JS & Python)
- Interview:Java岗位面试—面试求职攻略之一个JAVA程序员面试心得(非常值得收藏)
- Java代码规范
- 常见Java面试题 抽象类能使用 final 修饰吗?
- 【java】Java ArrayList
- Java中的JVM介绍
- 【JAVA】【NIO】5、Java NIO Scatter / Gather
- Eclipse 创建 Java 类
- IronPDF 2023.1 for Java Crack
- Java日期时间(LocalDate、LocalTime、LocalDateTime)