首页 / JAVA / Java 集合框架_中
Java 集合框架_中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 集合框架_中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1567字,纯文字阅读大概需要3分钟。
内容图文
![Java 集合框架_中](/upload/InfoBanner/zyjiaocheng/1116/fc1d14dbb37a43bb9386cf725168596c.jpg)
Set接口
特点:
【1】Set接口表示一个唯一、无序的容器(和添加顺序无关)
Set接口常用实现类有
HashSet
【1】HashSet是Set接口的实现类,底层数据结构是哈希表。
【2】HashSet是线程不安全的(不保证同步)
【3】根据哈希表的工作原理,请存储一个自定义对象到HashSet中。一定要实现hashCode方法和equals方法
【4】 优点:添加、删除、查询效率高;缺点:无序
LinkedHashSet
【1】LinkedHashSet是Set接口的实现类,底层数据结构哈希表+链表哈。希表用于散列元素;链表用于维持添加顺序
【2】如果要添加自定义对象元素,也需要重写hashCode和equals方法。
TreeSet
【1】TreeSet 是Set接口的实现类,底层数据结构是二叉树
【2】TreeSet 存储的数据按照一定的规则存储。存储规则让数据表现出自然顺序。
【3】输出时按照一定的规则:左子树->根节点->右子树
特殊:【4】比较策略分两种:内部比较器和外部比较器
内部比较器
(1)当一个自定义对象实现Comparable并实现compareTo方法时,通过指定具体的比较策略,此时称为内部比较器。
(2)比较策略一般当前对象写在前面,待比较对象也在后面,比较结果默认升序
return this.getAge() - o.getAge() ; 如果想要降序,改变两个比较对象的位置即可
(3)也可以多种比较因素
@Override public int compareTo(Student o) { /* if(this.getAge()<o.getAge()) { return -1; }else if(this.getAge() == o.getAge()) { return 0; }else { return 1; } */ // return this.getAge() - o.getAge() ; if(this.getAge()<o.getAge()) { return -1; }elseif(this.getAge() == o.getAge()) { returnthis.getName().compareTo(o.getName()); }else { return 1; } }
外部比较器
(1) 当实际开发过程中不知道添加元素的源代码、无权修改别人的代码,此时可以使用外部比较器。
(2)Comparator 位于java.util包中,定义了compare(o1,o2) 用于提供外部比较策略。TreeSet接受一个指定比较策略的构造方法,这些比较策略的实现类必须实现Comparator
(3)使用匿名内部类优化
public class Test02 { public static void main(String[] args) { TreeSet<String> set2 = new TreeSet<String>(new Comparator<String>() { @Override publicint compare(String o1, String o2) { return o1.length() - o2.length(); } }); set2.add("banana"); set2.add("coco"); set2.add("apple"); set2.add("apple"); System.out.println(set2); } }
原文:https://www.cnblogs.com/dedema/p/10821517.html
内容总结
以上是互联网集市为您收集整理的Java 集合框架_中全部内容,希望文章能够帮你解决Java 集合框架_中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。