章节七、4-Sets

时间:2023-03-09 13:31:59
章节七、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”)

章节七、4-Sets

二、使用不同是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);*/ } }

运行结果为:

章节七、4-Sets

三、set集合存储性能顺序

HashSet按照hash值存储,例如读书馆中书放在那个书架上都是有记录的,找书时不需要每个书架都找一遍,直接去对应的书架拿即可。

TreeSet需要保证自然顺序

四、那set集合分为hashSet、treeSet和linkedHashSet,我们怎么来区分什么情况下使用:

1、如果我们需要将元素排序, 那么使用TreeSet

2、如果我们不需要排序, 使用HashSet, HashSet比TreeSet效率高

3、如果我们需要保留存储顺序, 又要过滤重复元素, 那么使用LinkedHashSet