Set继承于Collection,所以都有Collection的方法。但是Set不能有重复元素,且因为没有索引,所以不能保证顺序,所以也不能用普通for循环来遍历
Set来自于HashSet
代码如下
package day35;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetDemo {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("who");
set.add("am");
set.add("I");
//如果有多余的元素,不会报错,但是不会保存
set.add("I");
//遍历有两种方式,迭代器和增强for
Iterator iter = set.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}
for(String s1 : set){
System.out.println(s1);
}
}
}
哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值
通过public int hashCode()方法获取哈希值
同一个对象的hash值是一样的,不同对象是不同的(除非重写方法),哪怕对象参数一样。
HashSet集合概述和特点
1、底层机构是哈希表
2、不保证集合的顺序
3、没有索引,不能用普通for循环来遍历
4、底层是set,没有重复元素
package day35;
import java.util.HashSet;
import java.util.Iterator;
public class HashSetDemo {
public static void main(String[] args) {
//哈希值
String ss0 = "hello";
System.out.println(ss0.hashCode());
HashSet<String> hs =new HashSet<String>();
hs.add("java");
hs.add("is");
hs.add("running");
//遍历两种
for(String s : hs){
System.out.println(s);
}
Iterator iter = hs.iterator();
while (iter.hasNext()){
String s1 = (String) iter.next();
System.out.println(s1);
}
}
}