Set:不包含重复元素的集合(单值存储)
①HashSet:散列存放(无序,没有get方法,可以使用toArray转成数组遍历查找或iterator)
HashSet<String> set = new HashSet<>();
set.add("uuiioo");
set.add("jjkkll");
boolean a1 = set.add("nnmm,,");
System.out.println("第一次存储是否成功?"+a1);
boolean a2 = set.add("nnmm,,");//不可添加重复数据
System.out.println("第二次存储是否成功?"+a2);
Iterator<String> iterator = set.iterator();//使用迭代器进行遍历
while (iterator.hasNext()){//如果存在下一个数据
System.out.println(iterator.next());
}
System.out.println("--------------------------------------------------------");
for (String s : set){//使用for遍历
System.out.println(s);
}
运行结果:
②TreeSet:(自然顺序,不能插入重复数据)
TreeSet<Integer> set = new TreeSet<>();
set.add(85);
set.add(99);
set.add(23);
set.add(8);
for (int a : set){
System.out.println(a);//有序排序基于ASCLL码表
}
Integer a = set.ceiling(77);//返回一个比参数77大的数字,如果没有返回null
System.out.println("比77大的数字是:"+a);
Integer b = set.floor(7);
System.out.println("比7小的数字是:"+b);
SortedSet<Integer> c = set.headSet(50);//返回此set的部分视图,其元素严格小于 toElement
System.out.println(c);
System.out.println("最后一位元素是:"+set.last());//集合中最高位(最后一元素)
Integer d = set.lower(20);//返回此集合中严格小于(不包括等于)给定数字20的最大数字,没有返回空
System.out.println("此集合中比20小的元素最大的是:"+d);
Integer e = set.pollFirst();//检索并删除第一个(最低)元素,如果此组为空,则返回 null。pollLast()相反。删除最高位元素
System.out.println("此集合中被删除的第一个元素为:"+e);
Iterator iterator = set.descendingIterator();//降序排列迭代器
while (iterator.hasNext()){
System.out.println(iterator.next());
}
运行结果:
HashTree中想要使用自定义方法存到HashTree中,需要继承Comparable,实现compareTo方法定义排序方式
public static void main(String[] args) {
TreeSet<Person> data = new TreeSet<>();
Person p1 = new Person("一二猪",19);
Person p2 = new Person("复祈",29);
Person p3 = new Person("滑头",20);
data.add(p1);
data.add(p2);
data.add(p3);
for (Person p:data){
System.out.println(p);
}
}
static class Person implements Comparable<Person>{//想要使用自定义方法存到HashTree中,需要继承Comparable,实现compareTo方法定义排序方式
private String name;
private int age;
@Override
public int compareTo(Person o) {
//this与o比较 ,返回的数据如果是负数则this小,0相等,整数this大
if (this.age > o.age) {
return 1;
} else if (this.age == o.age) {
return 0;
}
return -1;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
运行结果: