Java中集合类的常见使用方法(2)

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;
        }

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值