从头认识java-9.9 set
来源:互联网 发布:html中引入vue.js 编辑:程序博客网 时间:2024/06/04 08:26
这一章节我们来讨论一些set。
由于set里面的对象的不重复性,因此决定了set里面搜索查询的函数用的非常频繁,因此,我们一般使用hashset,因为它对于搜索进行了特殊的优化处理。
1.HashSet
由于HashSet对对象进行hash操作,因为它的搜索是根据hash码来操作的,因此, 它的输出是无序的。
package com.ray.ch09;import java.util.Arrays;import java.util.HashSet;import java.util.Random;public class Test {public static void main(String[] args) {HashSet<Integer> set = new HashSet<Integer>();Random random = new Random();for (int i = 0; i < 10000; i++) {set.add(random.nextInt(30));}System.out.println(Arrays.toString(set.toArray()));}}
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 16, 19, 18, 21, 20, 23, 22, 25, 24, 27, 26, 29, 28]
2.TreeSet
如果你需要结果是排序的,那么就应该使用TreeSet,它把对象放置在红黑树上面。
package com.ray.ch09;import java.util.Arrays;import java.util.Random;import java.util.TreeSet;public class Test {public static void main(String[] args) {TreeSet<Integer> set = new TreeSet<Integer>();Random random = new Random();for (int i = 0; i < 10000; i++) {set.add(random.nextInt(30));}System.out.println(Arrays.toString(set.toArray()));}}
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
3.set 的不重复性演示
package com.ray.ch09;import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;public class Test {public static void main(String[] args) {HashSet<Integer> set = new HashSet<Integer>();for (int i = 0; i < 10; i++) {set.add(i);}System.out.println(Arrays.toString(set.toArray()));set.add(12);System.out.println(Arrays.toString(set.toArray()));ArrayList<Integer> list = new ArrayList<Integer>();list.add(1);set.addAll(list);System.out.println(Arrays.toString(set.toArray()));}}
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
4.contains方法
由于set的不可重复性决定了contains方法是set里面使用的最频繁的方法。
package com.ray.ch09;import java.util.HashSet;public class Test {public static void main(String[] args) {HashSet<Integer> set = new HashSet<Integer>();for (int i = 0; i < 10; i++) {set.add(i);}System.out.println(set.contains(2));System.out.println(set.contains(12));}}
true
false
5.有些时候我们需要使用排序的不重复的人员名单时,可以优先考虑TreeSet,请注意代码里面的注释。
package com.ray.ch09;import java.util.Arrays;import java.util.TreeSet;public class Test {public static void main(String[] args) {TreeSet<String> treeSet = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);// 主要是这里设置了排序的属性,只是对字符串有效String text = "Aabbye,Caesar,abbe,Bairn,cais,Dagmar,baby";String[] names = text.split(",");for (int i = 0; i < names.length; i++) {treeSet.add(names[i]);}System.out.println(Arrays.toString(treeSet.toArray()));}}
输出:
[Aabbye, abbe, baby, Bairn, Caesar, cais, Dagmar]
总结:这一章节主要讲述了HashSet以及TreeSet的使用和注意点。
这一章节就到这里,谢谢。
-----------------------------------
目录
- 从头认识java-9.9 set
- 从头认识java-目录
- 从头认识java-1.6 多态
- 从头认识java-4.4 this
- 从头认识java-7.2 接口
- 从头认识java-9.7 LinkedList
- 从头认识java-9.10 Map
- 从头认识java-9.11 Queue
- 从头认识java-17.1 多线程
- 从头认识Spring-2.4 基于java的标准注解装配-@Inject(2)-通过set方法或者其他方法注入
- 从头认识java-1.2 对象-服务提供者
- 从头认识java-1.3 隐藏具体实现
- 从头认识java-1.4 复用代码
- 从头认识java-1.5 继承(1)
- 从头认识java-1.5 继承(2)
- 从头认识java-2.1 操作符
- 从头认识java-2.2 算术操作符
- 从头认识java-2.4 逻辑运算符
- Firefox源码试读之一: 何处决定新链接或书签是新标签页还是新窗口,当前窗口打开
- 解决oracle 11G exp 不能导出空表问题
- 123
- Java正则表达式
- C# 笔记片段
- 从头认识java-9.9 set
- 第一篇博客
- css 文本缩进 input label 块级元素
- Mac OS 启动apache localhost无法访问服务器
- MySQL下载安装、配置与使用(win7x64)
- 发现一个录音好软件
- Socket.IO for Unity 简要介绍和简单应用
- iOS非常重要的 block回调
- Python运算符