Set:
- 无序,不可重复的
- 遍历方式:
- for each
- 迭代器
1.HashSet
- 由HashMap维护
- 底层结构:底层是由哈希表存储的(数组+链表+红黑树组成)
- 优点:添加、查询、删除的效率高
- 缺点:无序,存放的顺序与真实存储的顺序不一致,顺序一旦确定不会改变
public class SetDemo01 {
public static void main(String[] args) {
HashSet<String> set=new HashSet();
set.add("胡歌");
set.add("杨洋");
set.add("宋承宪"); //字符串的内容相同,hashcode值肯定相同
set.add("宋承宪");
set.add("苏志燮");
//无序: 存放的顺序与真实存储的顺序不一致,顺序一旦确定不会改变
System.out.println(set);
System.out.println(set);
System.out.println(set);
System.out.println(set);
//打印的结果是两个对象的哈希值相等
/*String str1=new String("nihao");
String str2=new String("nihao");
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());*/
}
}
2.TreeSet
- 由TreeMap维护的
- 底层结构:红黑树
- 优点:查询效率高,有序(默认升序,可以自定义排序方式)
- 缺点:没有ArrayList和HashSet的查询效率高
3.实例
public class Person implements Comparable<Person>{
private String name;
int age;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=