章节七、4-Sets
一、set中不允许存在相同的元素
package ZangJie7; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set; public class SetDemo {
/**
* sets和list一样,都是集合,唯一不同的在于sets里面的元素不能重复,
*/
public static void main(String[] args) {
Set <String> set = new HashSet<String>();
//在集合中添加元素
set.add("BWm");
set.add("AoDi");
set.add("HonDa");
set.add("HonDa");
System.out.println(set); List<String> list = new ArrayList<String>();
list.add("BWm");
list.add("AoDi");
list.add("HonDa");
list.add("HonDa");
System.out.println(list); } }
运行结果为:(set中不允许存在相同的元素,所以只打印了一个“HonDa”)

二、使用不同是set集合,排序结果不同
package ZangJie7; import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet; public class SetDemo {
/**
* sets和list一样,都是集合,唯一不同的在于sets里面的元素不能重复,
*/
public static void main(String[] args) {
// HsahSet不保证存和取的顺序一样
Set <String> set = new HashSet<String>();
//在集合中添加元素
set.add("BWm");
set.add("AoDi");
set.add("HonDa");
set.add("HonDa");
// 使用高级for循环来读取集合中的元素
for(String item:set) {
System.out.println("HashSet读取的元素顺序:"+item);
}
System.out.println(); // LinkHashSet 保证有序
Set <String> lset = new LinkedHashSet<String>();
//在集合中添加元素
lset.add("BWm");
lset.add("AoDi");
lset.add("HonDa");
// 使用高级for循环来读取集合中的元素
for(String item:lset) {
System.out.println("LinkedHashSet读取的元素顺序:"+item);
}
System.out.println(); // TreeSet以自然排序的方式来对进行元素排序
Set <String> tset = new TreeSet<String>();
//在集合中添加元素
tset.add("BWm");
tset.add("AoDi");
tset.add("HonDa");
// 使用高级for循环来读取集合中的元素
for(String item:tset) {
System.out.println("TreeSet读取的元素顺序:"+item);
} /* List<String> list = new ArrayList<String>();
list.add("BWm");
list.add("AoDi");
list.add("HonDa");
list.add("HonDa");
System.out.println(list);*/ } }
运行结果为:

三、set集合存储性能顺序
HashSet按照hash值存储,例如读书馆中书放在那个书架上都是有记录的,找书时不需要每个书架都找一遍,直接去对应的书架拿即可。
TreeSet需要保证自然顺序
四、那set集合分为hashSet、treeSet和linkedHashSet,我们怎么来区分什么情况下使用:
1、如果我们需要将元素排序, 那么使用TreeSet
2、如果我们不需要排序, 使用HashSet, HashSet比TreeSet效率高
3、如果我们需要保留存储顺序, 又要过滤重复元素, 那么使用LinkedHashSet
章节七、4-Sets的更多相关文章
- 章节七、1-ArrayList
一.集合是一个容器,前面讲的数值也是一个容器, 它们的区别是: 1.数组既可以存储基本数据类型,又可以存储引用数据类型,而集合只能存储引用数据类型,也就是对象. 2.基本数据类型存储的是值,引用数据类 ...
- 章节七、6-Map集合的区别
一.通过entrySet取出Map中的元素 package ZangJie7; import java.util.HashMap; import java.util.Map; public class ...
- 章节七、5-Maps
一.向map集合中添加元素 map.put package ZangJie7; import java.util.HashMap; import java.util.Map; public class ...
- 章节七、3-ArrayList和LinkedList对比
一.创建集合并添加元素(从末尾位置添加) package ZangJie7; import java.util.ArrayList; import java.util.LinkedList; impo ...
- 章节七、2-Linked List
package introduction9; import java.util.ArrayList; import java.util.LinkedList; import java.util.Lis ...
- java Hotspot 内存管理白皮书(中文翻译)
转自: http://my.oschina.net/u/568779/blog/166891 1引言 一个健壮的 Java™2平台,Standard Edition (J2SE™)拥有一个自动内存管理 ...
- java 内存管理 —— 《Hotspot内存管理白皮书》
说明 要学习Java或者任意一门技术,我觉得最好的是从官网的资料开始学习.官网所给出的资料总是最权威最知道来龙去脉的.而Java中间,垃圾回收与内存管理是Java中非常重要的一部分.<Hot ...
- java HotSpot 内存管理白皮书
原文见:http://www.open-open.com/lib/view/open1381034220705.html.查阅资料后,对原文做了补充. 文中关于JVM的介绍基于JDK1.6的Hotsp ...
- 数据结构(Data Structures)
一.List数据类型的方法 定义两个list,a和b:a=[1,2,3,4],b=[7,8,9,10] a.append(x) 在a的末尾附加x元素 a.extend(b) ...
随机推荐
- 五分钟了解node,cnpm和yarn
1.静态网页和动态网页 动态网页:数据可以进行交互,动态改变数据 2.node node是基于chrome的V8引擎的javascript的运行环境,node中的事件机制以及非阻塞式的I/O式模式,使 ...
- 【ABP杂烩】Extensions后缀扩展方法
1.Extensions介绍 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用 ...
- Spring boot集成spring-boot-starter-data-jpa环境搭建
1.创建Spring boot项目 2.保存等待构建完成 3.增加spring-boot-starter-data-jpa.内存数据库依赖包hsqldb <!-- 添加data jpa依赖 -- ...
- leetcode — next-permutation
import java.util.Arrays; /** * Source : https://oj.leetcode.com/problems/next-permutation/ * * Creat ...
- python练习七—P2P下载
最近有些事儿比较忙,python的学习就断断续续,这个练习来得比预期的晚,不过还好,不管做什么,我都希望能认真对待,认真做好每一件事. 引入 这个练习原书中称作“使用XML-RPC进行文件共享”,题目 ...
- mysql年初至今聚合
年初至今聚合和滑动聚合类似,不同的地方仅在于统计的仅为当前一年的聚合.唯一的区别体现在下限的开始位置上.在年初至今的问题中,下限为该年的第一天,而滑动聚合的下限为N个月的第一天.因此,年初至今的问题的 ...
- Deep learning with Python 学习笔记(11)
总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...
- Spring Cloud Stream同一通道根据消息内容分发不同的消费逻辑
应用场景 有的时候,我们对于同一通道中的消息处理,会通过判断头信息或者消息内容来做一些差异化处理,比如:可能在消息头信息中带入消息版本号,然后通过if判断来执行不同的处理逻辑,其代码结构可能是这样的: ...
- 《Thinking In Java》---第四版 练习题答案
百度网盘下载:https://pan.baidu.com/share/link?shareid=2111776725&uk=2869544179&app=zd 在线查看:http:// ...
- shell编程基础(三): 位置参数与shell脚本的输入输出
一.位置参数和特殊变量 有很多特殊变量是被Shell自动赋值的,我们已经遇到了$?和$1,现在总结一下: 常用的位置参数和特殊变量: $0 相当于C语言main函数的argv[0] $1.$2... ...