zoukankan      html  css  js  c++  java
  • Java——集合框架之Set&HashSet,HashMap,泛型,compareTo


    Set

    • Set接口——数据存放无序,非常简单,主要呈现信息列表

    • Set接口存储一组唯一、无序的对象

    • HashSet是Set接口常用的实现类

    • Set接口不存在get方法

    • Iterator接口:表示对集合进行迭代的迭代器
    • hasNext():表示判断是否还有元素可以迭代
    • next():方法:返回迭代的下一个元素

    HashMap

    这里写图片描述

        public static void main(String[] args) {
            //存储数据的载体
            Set set = new HashSet<>();
            set.add(new Theme(1, "标题1", "简介one"));
            set.add(new Theme(2, "标题2", "简介two"));
            //遍历数据
            Iterator iter = set.iterator();
            while(iter.hasNext()){
                Theme theme = (Theme)iter.next();
                System.out.println(theme.getId()+" "+theme.getName()+" "+theme.getRemark());
            }
        }
    public static void main(String[] args) {
    
            Set set = new HashSet<>();
    //      set.add('b');
    //      set.add('a');
    //      Iterator iter = set.iterator();
    //      while(iter.hasNext()){
    //          System.out.println(iter.next());
    //      }
            //唯一,不能出现重复的数据
            //基本数据类型:值比较  引用数据类型:对象比较(地址)
            set.add('a');
            set.add(1);
            set.add(1);
            Theme theme1 = new Theme(1, "1", "1");
            Theme theme2 = new Theme(1, "1", "1");
            set.add(theme1);
            set.add(theme2);
            Iterator iter = set.iterator();
            while(iter.hasNext()){
                System.out.println(iter.next());
            }

    public static void main(String[] args) {

        //创建map集合对象
        Map map = new HashMap<>();
        //键值对形式存储,键:一般基本数据类型  值:
        //键值对是成对出现的。  key-value
        map.put(1, "abc");
        map.put(2, "def");
        map.put(3, "ghi");
        // 通过key得到value
        System.out.println(map.get(1));
        System.out.println(map);
        // remove 删除
        map.remove(2);
        System.out.println(map);
        // size 可以得到键值对的个数
        System.out.println(map.size());
        //存储国家编号
        Map map2 = new HashMap<>();
        //  map中的ket:Object   value:Object
        map2.put("CN", "China");
        map2.put("US", "America");
        map2.put("JP", "Japan");
        System.out.println(map2.get("CN"));
        // containsKey 是否包含传入的key的键值对
        System.out.println(map.containsKey("HK"));
        System.out.println(map.containsKey("CN"));
        Map map3 = new HashMap<>();
        Student stu = new Student(1, "小张", 12);
        map3.put(stu.getStuId(), stu);
        if(map3.containsKey(stu.getStuId())){
            System.out.println("找到了!");
        }else{
            System.out.println("没找到!");
        }
    
    }
    
            Map map = new HashMap<>();
            map.put(1, "a");
            map.put(2, "b");
            map.put(3, "c");
    
            //得到键值对中的键,组成成一个Set集合
    //      Set set = map.keySet();
    //      System.out.println(set);
            // values 所有的值组成的一个集合
    //      Collection col = map.values();
    //      System.out.println(col);
            // map下的entry可以得到由所有键值对组成的集合
            //里边存储的是所有的数据   (键——值组成)
            Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
            Iterator<Map.Entry<Integer, String>> iter = entrySet.iterator();
            while(iter.hasNext()){
                Map.Entry<Integer,String> entry = iter.next();
                System.out.println("键:"+entry.getKey());
                System.out.println("值"+entry.getValue());
            }

    泛型

    这里写图片描述

    public class A<T extends Number>{
    
        //T 类型 必须是Number类或Number类的子类
        public static void main(String[] args) throws ClassNotFoundException {
            A<Double> d = new A<>();
            //Number 及其子类
            // A<String> a = new A<>(); //报错
            //String 不继承自Number
            List<Number> list = new ArrayList<>();
            test(list);
        }   
        // super 传入的类型必须是Number或Number的父类
        // extends 传入的类型必须是Number或Number的子类
        // ?通配符,可以代指任意类型,方法的参数里
        public static void test1(List<? super Number> s){  }
        public static void test(List<? extends Number> s) throws ClassNotFoundException{
            Class<?> a = Class.forName("java.lang.StringBuffer");
            System.out.println(a.getName());
        }
    }
    public static void main(String[] args) {
            //应该存储相同类型的数据
            //使用泛型
            //  1:泛型约束了数据存储的类型
            //  2:使用get方法得到的数据类型是确定的
            //  泛型的语法:<Object> 必须是引用数据类型,
            //  如果存储基本数据类型,就要转成相应的包装类
            List<Integer> list = new ArrayList<>();
            list.add(1);
            list.add(2);
            int a = list.get(0);
            List<Student> list2= new ArrayList<>();
            list2.add(new Student(1, "张三", 10));
            Student stu = list2.get(0);
            HashMap<Integer, String> map = new HashMap<>();
            map.put(1, "abc");
        }

    compareTo

    @Override
    public int compareTo(Person o) {
            // TODO Auto-generated method stub
            //按照id进行升序排序
            // 如果对象本身的id 大于 传入的对象id,
            //返回值是正数,就是升序排序
            //返回值是负数,就是降序排序
    //      if(id>o.getId()){
    //          return 1;
    //      }else if(id==o.getId()){
    //          return 0;
    //      }
    //      return -1;
    
            //按照姓名排序
            //return name.compareTo(o.getName());
    
            //按照年龄排序
            if(age>o.getAge()){
                return 1;
            }else if(age==o.getAge()){
                return 0;
            }
            return -1;
        }
  • 相关阅读:
    使用 cordova-plugin-wechat 分享返回后闪退解决方法
    恢复删除的表
    移动端还原设计图
    js文本差异比较
    windows使用nvm安装nodejs后升级npm报错
    windows添加右键菜单"在此处打开cmd窗口"
    cordova热更新
    js变量提升
    c# 判断字符串是否是日期格式需要注意的一点小问题
    剑指offer_和为S的两个数字
  • 原文地址:https://www.cnblogs.com/aixing/p/13327732.html
Copyright © 2011-2022 走看看