Set
Set 集合的特征: 存储的元素(引用数据类型) 无序的,不可重复的。
HashSet 内部存储是一个散列表。 HashSet内部实现是一个HashMap.
集合存在的意义:就是存储对象。
public class SetDemo {
public static void main(String[] args) {
//接口 = 实现类
Set<String> set = new HashSet<String>();
//实现类 = 实现类
HashSet<String> hSet = new HashSet<String>();
hSet.add("dahuang");
//Set提供的方法
set.add("ac");
set.add("hello");
set.add("java");
set.add("sql");
set.add("oracle");
set.add("jack");
set.add("zee");
//Set 不可重复存放元素
set.add("zee");
//遍历Set集合
System.out.println(set.toString());
//数组的长度
System.out.println(set.size());
set的方法
//addall
set.addAll(hSet);
System.out.println(set.toString());
//clear 清除集合中的所有元素
//set.clear();
//System.out.println(set.size());
//是否包含某个元素
System.out.println(set.contains("dahuang"));
//hashCode
System.out.println(set.hashCode());
集合的遍历
//集合的遍历 toArray
Object[] objs = set.toArray();
for(Object obj:objs){
String str = (String)obj;
System.out.print(str+" ");
}
System.out.println("\n*************");
//集合的遍历2: forEach
for(String str:set){
System.out.print(str+" ");
}
System.out.println("\n***********");
//集合的遍历3: Iterator迭代器 游标
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){//下一位是否有值
System.out.print(iterator.next()+" ");//输出下一位的值
}
hashset
Hashset集合存储对象的原理:
Hsshset 存储对象,先判断对象的hashcode值是否存在于散列表中。如果没有,就存入Set集合。
如果有,再判定,两个对象的equals 是否相同。 如果equals相同,不存储。如果requals不同,则存入。
set集合中,有两个相同的hashcode。但不可能有两个相同的equals。
public class Test {
public static void main(String[] args) {
Student stu =new Student("张伟",8,"女");
Student stu1 = new Student("李漂亮",18,"男");
Student stu2 = new Student("杨丹",28,"女");
//stu2 和stu3算不算重复
Student stu3 = new Student("杨丹",28,"女");
//创建集合
Set<Student> stus = new HashSet<Student>();
stus.add(stu);
stus.add(stu1);
stus.add(stu2);
stus.add(stu3);
//hashCode
System.out.println(stu2.hashCode());
System.out.println(stu3.hashCode());
//在判断reques方法是否相同
System.out.println(stu2.equals(stu3));
//遍历集合
for(Student student : stus){
System.out.println(student);
}
LinkedHashSet
LinkedHashSet 有链表顺序 不能重复
*/
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetDemo {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("hello");
set.add("jave");
set.add("mysql");
set.add("oracle");
set.add("html");
set.add("css");
set.add("css");//不能重复
for(String str : set){
System.out.print(str+" ");
}
结果:
tree
**Tree 树,
Tree 树形结构, 有序的。
TreeSet 是可排序的集合。默认按照字典或数字顺序排列。**
public class TreeSetDemo {
public static void main(String[] args) {
Set<String> set = new TreeSet<>();
set.add("1hello");
set.add("2java");
set.add("5aaaa");
set.add("3aaa");
set.add("7bliu");
set.add("4gree");
set.add("6full");
for(String str : set){
System.out.println(str);
}
}
}