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;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值