特点:无序、五下标、元素不可重复
public class TestSet {
public static void main(String[] args) {
Set testSet = new HashSet();
testSet.add('aaa');
testSet.add('bbb');
testSet.add('ccc');
//testSet.add('ccc');
System.out.println(testSet.toString());
//remove/clear
//遍历
for (Object o :
testSet) {
System.out.println(o);
}
Iterator iterator = testSet.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
//判断
System.out.println(testSet.contains('aaa'));
}
}
HashSet:
基于HashCode计算元素存储位置存储结构:哈希表当存入的元素的哈希码相会调用equals进行确认,返回true则拒绝存入
public class TestHashSet {
public static void main(String[] args) {
HashSet hashSet = new HashSet<>();
Student s1 = new Student('aaa', 20);
Student s2 = new Student('bbb', 21);
Student s3 = new Student('ccc', 22);
Student s4 = new Student('ccc', 22);
hashSet.add(s1);
hashSet.add(s2);
hashSet.add(s3);
// hashSet.add(s3);
hashSet.add(s4);
//hashCode不同,存储位置不同
System.out.println(s3.hashCode());
System.out.println(s4.hashCode());
System.out.println(hashSet);
//重写hashCode更加名字和age生成hashCode,相同name和age的元素hashCode一样
//此时如果元素不一样,则转为线性探索,或二分探索,链表存储等
//重写equals方法使得name和age相同即相等,则不会保存相同name和age的对象
//遍历foreach、iterator
//contains、isEmpty
}
}
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点