HashSet的常用方法(含示例代码)

HashSet集合中不能包含重复元素,并且不会对集合中的元素进行排序,其常用的方法包括:

基本操作:

int size();
boolean isEmpty();
boolean contains(E element);
boolean add(E element);
boolean remove(E element);
Iterator iterator();

批量操作:

boolean containsAll(Collection c);
boolean addAll(Collection c);        //取得并集
boolean removeAll(Collection c);     //删除交集元素
boolean retainAll(Collection c);     //取得交集
void clear();

数组操作:

Object[] toArray();         //将集合转化为Object数组
E[] toArray(new E(c.size));         //将c集合转化为E数组

代码示例如下所示:

注:Collections.singleton(e) 的含义是:生成一个只含有一个元素e的集合

package test;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Collections;

public class Test {

	public static void main(String args[]) {
		int[] a= {6,5,4,3,2,1,1,5,6,7};
		HashSet hs=new HashSet<>();       //所有的集合中存储的元素的类型都不会是基本数据类型!!!使用菱形推断创建对象
		for(int i:a) {
			if(!hs.add(i))
				System.out.println(i+"已存在!");       //HashSet中的元素不允许重复!
			hs.add(i);
		}
		/*for(int i=0;i h=new HashSet<>();
		h.add(102);           //添加元素102
		//h.remove(102);        删除元素102
		h.add(103);
		h.add(2);
		
		if(hs.containsAll(h)) {           //判断集合是否包含另一集合的所有元素
			System.out.println("hs集合中包含h集合中的所有元素");
		}
		else {
			System.out.println("hs集合中不包含h集合中的所有元素");
		}
		//hs.addAll(h);            将集合h中的所有元素添加到hs中
		hs.removeAll(h);         //删除hs和h的交集中的元素
		//hs.retainAll(h);         取得hs和h的交集的元素
		//hs.clear();              删除所有hs的元素
		
		Object[] objects=hs.toArray();    //HashSet.toArray()的无参方法
		for(Object o:objects) {
			System.out.print(o+"  ");
		}
		System.out.println();
		
		Integer[] mid=hs.toArray(new Integer[hs.size()]);           //HashSet.toArray()的带参方法
		for(Integer integer:mid) {
			System.out.print(integer+"  ");
		}
		System.out.println();
		
		hs.removeAll(java.util.Collections.singleton(7));     //Collections.singleton(7):生成只有一个元素7的集合
		
		Iterator iterator=hs.iterator();
		while(iterator.hasNext()) {
			System.out.print(iterator.next()+"  ");
		}
		System.out.println();
		
	}
}

结果如下:

HashSet的常用方法(含示例代码)_第1张图片

 在添加复杂类对象时,可以重写hashCode()和equals()方法,防止输入重复

package test;

import java.util.HashSet;

class Student{
	private int id;
	private String name;
	
	public Student() {
	}

	public Student(int id, String name) {
		this.id = id;
		this.name = name;
	}

	@Override
	public int hashCode() {
		return id;
	}

	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Student) {
			Student student=(Student)obj;
			return this.id==student.id;
		}
		else
			return false;
	}
	
}
public class Test {

	public static void main(String args[]) {
		Student s1=new Student(01,"张三");
		Student s2=new Student(01,"李四");
		HashSet hSet=new HashSet<>();
		hSet.add(s1);
		hSet.add(s2);
		System.out.println("大小为:"+hSet.size());              //add()方法是系统先判断hashCode()是否相等,然后再调用equals()
	}
}

HashSet的常用方法(含示例代码)_第2张图片 

 

你可能感兴趣的:(java基础)