一、HashSet
- HashSet的父类为Set,特点是:
1、没有顺序
2、没有重复元素。
3、没有下标,不能用for i 循环 - demo
Dog dog1 = new Dog(1, "菲菲");
Set<Dog> dogSet = new HashSet<>();
dogSet.add(dog1);
dogSet.add(dog1);
//[Dog{age=1, name='菲菲'}],最后只打印一项
System.out.println(Arrays.toString(dogSet.toArray()));
二、TreeSet
- TreeSet的父类为TreeSet,特点是:
1、TreeSet对自定的Comparator元素比较进行排序输出
2、Comparator元素比较进行排除重复元素
3、没有下标,不能用for i 循环
Dog dog1 = new Dog(1, "菲菲");
Dog dog2 = new Dog(10, "哈皮");
Dog dog3 = new Dog(100, "爷爷");
Dog dog4 = new Dog(1, "Tom");
Dog dog5 = new Dog(2, "哈皮");
// 对年龄进行排序
TreeSet<Dog> dogTreeSet = new TreeSet<>(((d1, d2) -> d1.getAge() - d2.getAge()));
dogTreeSet.add(dog1);
dogTreeSet.add(dog2);
dogTreeSet.add(dog3);
dogTreeSet.add(dog4);
dogTreeSet.add(dog5);
// [Dog{age=1, name='菲菲'}, Dog{age=2, name='哈皮'}, Dog{age=10, name='哈皮'}, Dog{age=100, name='爷爷'}]
System.out.println(Arrays.toString(dogTreeSet.toArray()));
三、LinkedHashSet
1、固定位置
2、没有重复元素。
3、没有下标,不能用for i 循环
Dog dog1 = new Dog(1, "菲菲");
Dog dog2 = new Dog(10, "哈皮");
Dog dog3 = new Dog(100, "爷爷");
Dog dog4 = new Dog(1, "Tom");
Dog dog5 = new Dog(2, "哈皮");
LinkedHashSet<Dog> dogLinkedHashSet = new LinkedHashSet<>();
dogLinkedHashSet.add(dog1);
dogLinkedHashSet.add(dog1);
dogLinkedHashSet.add(dog2);
dogLinkedHashSet.add(dog3);
dogLinkedHashSet.add(dog4);
dogLinkedHashSet.add(dog5);
System.out.println(Arrays.toString(dogLinkedHashSet.toArray()));
//[Dog{age=1, name='菲菲'}, Dog{age=10, name='哈皮'}, Dog{age=100, name='爷爷'}, Dog{age=1, name='Tom'}, Dog{age=2, name='哈皮'}]
Dog.java
package com.kouding;
public class Dog {
private int age;
private String name;
public Dog(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Dog dog = (Dog) o;
if (age != dog.age) return false;
return name.equals(dog.name);
}
@Override
public String toString() {
return "Dog{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
@Override
public int hashCode() {
int result = age;
result = 31 * result + name.hashCode();
return result;
}
}
网友评论