哈希表基础:https://www.cnblogs.com/s-b-b/p/6208565.html
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class HashSetDemo {
/**
* @param args
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) {
//Set集合 都是排重 ,不允许存在重复
Set set = new HashSet();
//添加元素 返回值 true 添加成功 false 添加失败 (set集合已经存在相同元素)
set.add(1);
//addAll(集合)-->Collection
ArrayList list = new ArrayList();
list.add(1);
list.add(1);
list.add(1);
//不是添加集合对象,添加结合中的元素
set.addAll(list);
//判断集合中是否存在指定元素 true false
boolean result = set.contains(1);
System.out.println(result);
/*
* boolean containsAll(Collection<?> c)
如果此 set 包含指定 collection 的所有元素,则返回 true。
*/
//equals 比较当前set集合对象是否相等 --> 重写equals(AbstractSet)
Set set1 = new HashSet();
set1.add(1);
System.out.println(set.equals(set1));
/*boolean isEmpty()
如果 set 不包含元素,则返回 true。 */
//Iterator<E> iterator()
// 返回在此 set 中的元素上进行迭代的迭代器。
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
/*
* boolean remove(Object o)
如果 set 中存在指定的元素,则将其移除(可选操作)。
boolean removeAll(Collection<?> c)
移除 set 中那些包含在指定 collection 中的元素(可选操作)。
*/
set.add(2);
set.add(3);
set.add(4);
set.add(5);
//保留提供set集合中元素,剩余元素删除
set.retainAll(set1);
/*
* Object[] toArray()
返回一个包含 set 中所有元素的数组。
<T> T[] toArray(T[] a)
返回一个包含此 set 中所有元素的数组;返回数组的运行时类型是指定数组的类型。
*/
System.out.println(set.size());
for(Object obj : set){
System.out.println(obj);
}
System.out.println(set);
HashSet hset = new HashSet();
hset.add(new A());
hset.add(new A());
hset.add(new B());
hset.add(new B());
hset.add(new C());
hset.add(new C());
System.out.println(hset);
}
}
class A{
@Override
public boolean equals(Object obj){
return true;
}
@Override
public String toString() {
return "我是A对象";
}
}
class B{
@Override
public int hashCode() {
return 1;
}
@Override
public String toString() {
return "我是B对象";
}
}
class C{
@Override
public boolean equals(Object obj){
return true;
}
@Override
public int hashCode() {
return 2;
}
@Override
public String toString() {
return "我是C对象";
}
}