Java HashSet
1 什么是Java HashSet
Java HashSet类用于创建使用哈希表进行存储的集合。它继承了AbstractSet类并实现Set接口。
Java HashSet类的核心要点是:
- HashSet通过使用一种称为哈希的机制来存储元素。
- HashSet不能存放重复元素。
- HashSet允许为空值。
- HashSet类是非同步的(线程不安全)。
- HashSet元素是无序的。因为元素是根据其哈希码插入的。
- HashSet方便检索数据。
- HashSet的初始默认容量为16,而负载因子为0.75。
2 List和Set的区别
List可以包含重复元素,而Set仅包含唯一元素。
3 Java HashSet的层次结构
HashSet类继承了实现Set接口的AbstractSet类。Set接口继承Collection和Iterable接口。
4 Java HashSet的语法
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
5 Java HashSet的构造方法
构造方法 | 描述 |
---|---|
HashSet() | 用于构造默认的HashSet。 |
HashSet(int capacity) | 用于将HashSet的容量初始化为给定的整数容量。随着将元素添加到HashSet中,容量会自动增长。 |
HashSet(int capacity, float loadFactor) | 用于将HashSet的容量初始化为给定的整数容量和指定的负载因子。 |
HashSet(Collection<? extends E> c) | 用于通过使用集合来初始化HashSet。 |
6 Java HashSet的方法
修饰符 | 方法 | 描述 |
---|---|---|
boolean | add(E e) | 如果指定的元素尚不存在,则用于将其添加到此集合中。 |
void | clear() | 用于删除集合中的所有元素。 |
object | clone() | 用于返回此HashSet实例的浅表副本:元素本身未克隆。 |
boolean | contains(Object o) | 如果此集合包含指定的元素,则用于返回true。 |
boolean | isEmpty() | 如果此集合不包含任何元素,则用于返回true。 |
Iterator<E> | iterator() | 用于返回此集合中元素的迭代器。 |
boolean | remove(Object o) | 如果存在指定元素,则用于从该集合中删除该元素。 |
int | size() | 用于返回集合中的元素数。 |
Spliterator<E> | spliterator() | Java1.8引入的一种并行遍历的机制 |
7 Java HashSet的例子
让我们看一个简单的HashSet示例。注意,元素在无序集合中进行迭代。
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java HashSet的例子
*/
import java.util.*;
class Demo{
public static void main(String args[]){
//创建HashSet,添加元素
HashSet<String> set=new HashSet();
set.add("One");
set.add("Two");
set.add("Three");
set.add("Four");
set.add("Five");
Iterator<String> i=set.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
}
}
输出结果为:
Five
One
Four
Two
Three
8 Java HashSet排除重复元素
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java HashSet的例子
*/
import java.util.*;
class Demo{
public static void main(String args[]){
//创建HashSet,添加元素
HashSet<String> set=new HashSet<String>();
set.add("eric");
set.add("jack");
set.add("lucy");
set.add("jack");
//遍历元素
Iterator<String> itr=set.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
输出结果为:
eric
jack
lucy
9 Java HashSet删除元素
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java HashSet的例子
*/
import java.util.*;
class Demo{
public static void main(String args[]){
HashSet<String> set=new HashSet<String>();
set.add("eric");
set.add("jack");
set.add("mark");
set.add("rose");
System.out.println("初始化HashSet: "+set);
//删除元素
set.remove("mark");
System.out.println("调用remove(object)方法后: "+set);
HashSet<String> set1=new HashSet<String>();
set1.add("lucy");
set1.add("lucas");
set.addAll(set1);
System.out.println("更新后的HashSet: "+set);
//删除HashSet的所有元素
set.removeAll(set1);
System.out.println("调用removeAll()方法后: "+set);
//删除指定元素
set.removeIf(str->str.contains("lucy"));
System.out.println("调用removeIf()方法后: "+set);
//清空所有元素
set.clear();
System.out.println("调用clear()方法后: "+set);
}
}
输出结果为:
初始化HashSet: [eric, rose, jack, mark]
调用remove(object)方法后: [eric, rose, jack]
更新后的HashSet: [lucas, eric, rose, lucy, jack]
调用removeAll()方法后: [eric, rose, jack]
调用removeIf()方法后: [eric, rose, jack]
调用clear()方法后: []
10 用Collection构造HashSet
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java HashSet的例子
*/
import java.util.*;
class Demo{
public static void main(String args[]){
ArrayList<String> list=new ArrayList<String>();
list.add("eric");
list.add("jack");
list.add("rose");
HashSet<String> set=new HashSet(list);
set.add("mark");
Iterator<String> i=set.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
}
}
输出结果为:
eric
rose
jack
mark
热门文章
优秀文章