package com.wonders.week01.collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* HashSet
* (1)HashSet实现了Set接口,后面是一个哈希表(实际上是一个HashMap的实例)。
* (2)它不能保证集合的迭代顺序,尤其是它并不能保证顺序会随着时间的推移而保持不变。
* (3)这个类是允许有null元素存在的。
* (4)这个类中的基本操作方法的时间复杂度都是常数阶(add,remove,contains,size)。
* (5)假设哈希函数把元素恰当的分散在容器中,在这个集合上迭代需要时间与HashSet实例的大小
* (元素的数量)和支持HashMap实例的“容量”(bucket的数量)成比例。因此如果迭代性能不是特别重要
* 把初始容量大小设置的不要过高(负载因子设置过低)是很重要的。
* (6)是一个非线程安全的集合类
* @author liyongyong
*
*/
public class HashSetTest {
public static void main(String[] args) {
HashSet<String> hashSet = new HashSet<String>();
Set<String> set = new HashSet<String>();
//向set中添加元素
hashSet.add("one");
hashSet.add("two");
set.add("three");
set.add("four");
//返回hashSet集合中的元素个数
int size = hashSet.size();
System.out.println("这个hashSet集合中的元素个数为: " + size);
//返回hashset集合中元素的迭代
Iterator<String> iterator = hashSet.iterator();
while (iterator.hasNext()) {
String string = (String) iterator.next();
System.out.print( string + " ");
}
System.out.println();
//判断该集合是否有元素存在,如果存在则返回false,如果不存在则返回true
boolean flag = hashSet.isEmpty();
System.out.println("该集合是否为空 :" + flag);
//判断该集合中是否包含该元素,如果包含则返回true,否则返回false
boolean contain = set.contains("");
System.out.println("该集合是否包含该对象 : " + contain);
//向set集合中添加一个元素,如果该元素已经存在于集合中,则会返回false,如果不存在就会返回true
boolean add1 = set.add("three");
System.out.println("是否添加成功: " + add1);
boolean add2 = set.add("five");
System.out.println("是否添加成功: " + add2);
boolean r = set.remove("three");
System.out.println("是否移除成功:" + r);
//移除hashset集合中的所有元素
//set.clear();
//返回一个hashSet实例的浅克隆,元素本身是不会被复制的。
hashSet.clone();
}
}
API学习HashSet
最新推荐文章于 2024-05-18 22:13:22 发布