首页 > 编程语言 >java_day16

java_day16

时间:2022-10-21 15:22:30浏览次数:37  
标签:java hashMap System day16 Student println new out

Java基础

Java集合框架

Map接口

  • 用于存储任意键值对key-value
  • 键:无序、无下标、不允许重复
  • 值:无序、无下标、运行重复

方法

  • put(key,value) 将对象存入到集合中,关联键值。若key值重复则覆盖原值

  • get(Object key) 根据键获取对应的值

  • Set(key) 返回所有的key

  • values() 返回包含所有值的collection集合

  • Set<Map.Entry<k,v>> 键值匹配的set集合

    /**
     * Map接口的使用
     * 特点
     *      1、存储键值对
     *      2、键不能重复、值可以
     *      3、无序
     * @author xue
     */
    public class Demo1 {
        public static void main(String[] args) {
            //创建Map集合
            Map<String, String> hashMap = new HashMap<>();
    
            //添加元素
            hashMap.put("cn","china");
            hashMap.put("uk","english");
            hashMap.put("usa","amarica");
            hashMap.put("usa","shabi");//后面出现相同的key值是,value值会被替换最新
    
            System.out.println("元素个数"+hashMap.size());
            System.out.println(hashMap.toString());
    
            //删除元素
            hashMap.remove("usa");//可以只指定key值,也可以key-value都指定
    
            //遍历
            System.out.println("使用keyset集合");
            Set<String> keySet = hashMap.keySet();//返回的是所有key的set集合
            for (String str:keySet) {
                System.out.println(str+":"+hashMap.get(str));
            }
    
            System.out.println("使用entrySet方法");
            Set<Map.Entry<String,String>> entries = hashMap.entrySet();
            for (Map.Entry<String,String> entry:entries) {
                System.out.println(entry);
                System.out.println("4444");
                System.out.println(entry.getKey()+":"+entry.getValue());
            }
            
            //entrySet的效率要由于keySet
    
    
        }
    }
    

HashMap

  • 线程不安全,运行效率快

@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }





/**
 * Map接口的使用
 * 存储结构:哈希表(数组+链表+红黑树)
 * key值唯一的原理是使用key的hashcode和euals方法为依据
 * 也就是说重写这两个方法可以改变key值比较的规则
 * @author xue
 */
public class Demo2 {
    public static void main(String[] args) {
        //创建集合
        HashMap<Student,String> hashMap = new HashMap<>();

        //添加元素
        Student stu1 = new Student("aaa", 12);
        Student stu2 = new Student("bbb", 13);
        Student stu3 = new Student("ccc", 18);
        Student stu4 = new Student("ddd", 10);

        hashMap.put(stu1,"1");
        hashMap.put(stu2,"2");
        hashMap.put(stu3,"4");
        hashMap.put(stu4,"3");
        //重写hashCode与equals方法后下面的元素便无法添加
        hashMap.put(new Student("ddd", 10),"3");

        System.out.println("元素个数:"+hashMap.size());
        System.out.println(hashMap);

        //删除
        hashMap.remove(stu1);
        //重写hashCode与equals方法后下面的元素这样可以删除
        hashMap.remove(new Student("ddd", 10));
        System.out.println("元素个数:"+hashMap.size());
        System.out.println(hashMap);

        //遍历
        System.out.println("keySet");
        Set<Student> keySet = hashMap.keySet();
        for (Student stu:keySet) {
            System.out.println(stu+":"+hashMap.get(stu));
        }

        System.out.println("entrySet");
        Set<Map.Entry<Student, String>> entries = hashMap.entrySet();
        for (Map.Entry entry:entries) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }

    }
    
}

TreeMap

  • 实现了SortedMap接口,可以对key自动排序

    /**
     * TreeMap的使用
     * 存储结构:红黑树
     * @author xue
     */
    public class Demo3 {
    
        public static void main(String[] args) {
            //创建TreeMap集合
            TreeMap<Student, String> treeMap = new TreeMap<Student, String>();
    
            //添加元素
            Student stu1 = new Student("aaa", 12);
            Student stu2 = new Student("bbb", 13);
            Student stu3 = new Student("ccc", 18);
            Student stu4 = new Student("ddd", 10);
            Student stu5 = new Student("ddd", 10);
    
            treeMap.put(stu1,"1");
            treeMap.put(stu2,"2");
            treeMap.put(stu4,"4");
            treeMap.put(stu3,"3");
            treeMap.put(stu5,"3");
    //        treeMap.put(stu1,"1");
    
            System.out.println("元素个数:"+treeMap.size());
            System.out.println(treeMap);
    
            //删除
            treeMap.remove(stu1);
    
            //遍历
            System.out.println("keySet");
            Set<Student> keySet = treeMap.keySet();
            for (Student stu:keySet) {
                System.out.println(stu+":"+treeMap.get(stu));
            }
    
            System.out.println("entrySet");
            Set<Map.Entry<Student, String>> entries = treeMap.entrySet();
            for (Map.Entry entry:entries) {
                System.out.println(entry.getKey()+":"+entry.getValue());
            }
    
        }
    }
    

看了源码后就能直到HashSet与TreeSet其实都是调用了HashMap与TreeMap,有兴趣可以看一看

Colletions工具类

  • 集合的工具类,定义了一下集合的常用方法

    /**
     * Collections工具类的使用
     * @author xue
     */
    public class Demo4 {
        public static void main(String[] args) {
            ArrayList<Integer> aList = new ArrayList<>();
            aList.add(234);
            aList.add(2);
            aList.add(34);
            aList.add(346);
            aList.add(56457);
            System.out.println("排序前");
            System.out.println(aList);
            System.out.println("排序后");
            Collections.sort(aList);//也可以自己写比较规则
            System.out.println(aList);
    
            //二分查找
            System.out.println( Collections.binarySearch(aList, 34));//返回的是int类型的位置序号
    
            //翻转
            System.out.println("翻转后");
            Collections.reverse(aList);
            System.out.println(aList);
    
            //打乱
            System.out.println("打乱后");
            Collections.shuffle(aList);
            System.out.println(aList);
    
            //list转数组
            Integer[] arr = (Integer[]) aList.toArray(new Integer[aList.size()]);
            System.out.println(arr.length);
            System.out.println(Arrays.toString(arr));
    
            //数组转List
            List<Integer> list  = Arrays.asList(arr);//受限集合:只读
    //        list.add(12);//添加就报错
            System.out.println(list);
    
            //这两个方法有很多限制
    
    
        }
    }
    

标签:java,hashMap,System,day16,Student,println,new,out
From: https://www.cnblogs.com/onlyxue/p/16813593.html

相关文章

  • Java保留2位小数(六种方法)
    一、使用java.math.BigDecimal类publicstaticStringformat1(doublevalue){BigDecimalbd=newBigDecimal(value);bd=bd.setScale(......
  • 数据库 使用Kettle同步数据时报错Caused by: java.sql.SQLException: Incorrect stri
    使用kettle向mysql8.0数据库同步数据时遇到的报错,这是数据库表的编码问题。可以通过修改Mysql数据库默认字符集及相关库表、字段字符字符集解决。检查数据库表相关编码设......
  • java -jar 的脚本示例
    #!/bin/bash#chkconfig:23458090#date:2022年3月21日#启动第一个jar包PID=$(ps-ef|grepruoyi-monitor-admin.jar|grep-vgrep|awk'{print$2}')if[......
  • Java实现微信扫码支付(NATIVE方式)[全网最简单]
    基本业务逻辑就是用户访问过来,我们去调微信支付的接口人家返给我们一个二维码我们丢给前端让用户扫码支付就行,等他支付完了微信会回调通知我们支付完了,这个回调的地址......
  • Java反射设置可以访问私有成员
    定义一个测试类publicclassUser{privateStringname="ppp";privateStringsex;privateintage;privatevoideat(Stringnum){Sy......
  • Java关键字(三)——static
    我们说Java是一种面向对象编程的语言,而对象是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,对同类对象抽象出其共性,便是Java中的类,我们可以用类描述世间万物......
  • NodeJS & Dapr Javascript SDK 官方使用指南
    Dapr是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框......
  • Java一个还不错的日期格式转换工具类(附源码)
    Java工具类pom依赖<commons-lang3.version>3.3.2</commons-lang3.version><dependency><groupId>org.apache.commons</groupId......
  • 【JavaWeb】 Mybatis-02-Mybatis的快速入门
    @[Toc]写在前言mybatis里面的配置文件是如何联系的这是我第二次学习mybatis的理解,我理解的和如下图,config包含了数据库的配置,以及mappers,通过mappers可以找到各类Mapper,这样......
  • 【JavaWeb】 Mybatis-03-Mybatis代理开发
    @[Toc]Mybatis代理1、为什么使用Mybatis代理?Mybatis开发者给了用户两个配置的方式,一个是如我们​​JavaWebMybatis-02-Mybatis的快速入门​​里的那样单纯使用XML配置,另外......