Skip to main content

Set

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

简述

Set 对象是值的集合,你可以按照插入的顺序迭代它的元素。Set 中的元素只会出现一次,即 Set 中的元素是唯一的。

示例

使用 Set 对象

let mySet = new Set();

mySet.add(1); // Set [ 1 ]
mySet.add(5); // Set [ 1, 5 ]
mySet.add(5); // Set [ 1, 5 ]
mySet.add("some text"); // Set [ 1, 5, "some text" ]
let o = { a: 1, b: 2 };
mySet.add(o);

mySet.add({ a: 1, b: 2 }); // o 指向的是不同的对象,所以没问题

mySet.has(1); // true
mySet.has(3); // false
mySet.has(5); // true
mySet.has(Math.sqrt(25)); // true
mySet.has("Some Text".toLowerCase()); // true
mySet.has(o); // true

mySet.size; // 5

mySet.delete(5); // true,从 set 中移除 5
mySet.has(5); // false, 5 已经被移除

mySet.size; // 4,刚刚移除一个值

console.log(mySet);
// logs Set(4) [ 1, "some text", {…}, {…} ] in Firefox
// logs Set(4) { 1, "some text", {…}, {…} } in Chrome

Set 类型

  • HashSet
  • TreeSet

HashSet

它有几个特性,首先它不会出现重复的元素,其次它是无序的,此外它可以含有空元素。

Set<String> str = new HashSet<String>();
str.add("first");//添加元素
str.add("second");
str.remove("first");//删除元素
//遍历,通过迭代器
Iterator<String> it = str.iterator();

TreeSet

它的特点首先是不能写入相同的数据,其次是不能写入空数据,最后写入的数据是有序的

Set<String> str = new TreeSet<String>();
str.add("first");//添加元素
str.add("second");
str.add("third");
//遍历,通过迭代器
Iterator<String> it = str.iterator();

参考