Set接口存储一组唯一,无序的对象。
HashSet 是Set接口常用的实现类。
HashSet允许集合元素值为null
操作数据的方法与List类似,Set接口不存在get()方法。
Iterator接口表示对集合进行迭代的迭代器,专门实现集合的遍历。
方法:
hasNext():判断是否存在另一个可访问的元素
next():返回要访问的下一个元素
package com.hpe.collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.junit.Test;
/*
* set存储元素是无序的
* 无序性:并不随机,指在元素在底层存储的元素位置是无序的
* 不可重复性:当向Set中添加相同的元素时,后面元素不能添加
* 要求添加进Set中元素所在的类,一定要重写equals方法和hashcode方法
* 1.Set中的元素存储机制:使用哈希算法
* 当向Set中添加对象时,首先调用此对象所在hashcode方法,计算对象的哈希值决定了此对象在
* Set中的存储位置,若此对象位置没有对象存储,则这个对象存储在此位置,若此位置有对象存储,再通过equals方法
* 比较两个对象是否相同,如果相同则只添加前一个。
*
* 与List不同的是没有get方法
*/
public class TestSet {
@Test
public void testHashSet1() {
Set set = new HashSet();
set.add(123);
set.add(567);
set.add("abc");
set.add(null);
set.add("A");
Person p1 = new Person("zhangsan",15);
Person p2 = new Person("zhangsan",15);
set.add(p1);
set.add(p2);
System.out.println(set.size());
System.out.println(set);
}
@Test
public void testHashSet2() {
Set set = new HashSet();
set.add(123);
set.add(567);
set.add("abc");
set.add(null);
set.add("A");
Iterator iterator = set.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
for(Object obj : set) {
System.out.println(obj);
}
}
}