Java之集合框架Map及其他常用类

一、Map

       1、Map集合中存储的是键值对,一对一对的往里存,并且要保证键值的唯一性。

       2、Map集合的方法:(1)增加:put(K key,V value)该方法会返回key值之前对应的value值。putAll方法则是将另一个Map集合中的键值对存储到指定集合中。

                                        (2)删除:remove(K key)该方法在删除键的同时会同时返回对应的值。clear方法清空Map集合。

                                        (3)判断:containsKey和containsValue方法分别判断指定Map集合中是否有对应的键值。

                                        (4)查询:get(K  key)获取该键对应的值,values方法获取存储有所有值的collection集合,size方法获取Map集合的键值对个数。

                                        (5)获取:主要有两种方法,keySet方法和entrySet,取出的原理就是将Map集合转成Set集合在遍历迭代器取出。

        keySet方法是将Map集合中的键存入到set集合中,因为set集合具有迭代器,可以通过迭代器的方式取出所有的键,然后在调用Map集合本身的get方法获取对应的值,entrySet方法是返回一个存储有键值对映射关系的set集合,该映射关系是一个内部接口Entry,没有Map就没有Entry,所以定义在内部,获取到该存储有映射关系的集合后通过迭代器出去映射关系,在通过Entry的子类对象复写的getValue和getKey方法获取键值对。

         当数据之间存在映射关系时,就可以使用Map集合进行数据的存储,同时Map集合中也可以存储Map集合作为值存在,用以解决多种映射关系同时存在的问题。

        3、Map集合的常用子类对象:HashTable、HashMap、TreeMap,HashTable的底层数据结构是哈希表数据结构,不可以存入null键和null值,线程是同步的,HashMap的底层数据结构也是哈希表数据结构,它可以存入null键和null值,线程是非同步的,TreeMap的底层数据结构是二叉树,线程是非同步的,可以给Map集合中的键进行排序。我们可以通过get方法的返回值来判断一个键是否存在,如果返回值为null,则不存在该键。

二、Collections

        1、Collections是集合框架工具类,专门用于对集合进行操作,其中全都是静态方法。

        2、Collections方法:

      (1)sort方法用于给List集合中的元素进行排序,有两个重载函数,既可以传入自身具有比较性的对象,对其进行自然排序,也可以通过传入比较器的方法对任意List集合中元素进行排序。

      (2)max方法,用于获取list集合中最大的元素,和sort相同的也有两个重载函数,一种是获取自身具备比较性的list集合的最大值,另一种是将比较器作为参数传递给max方法获取按该比较器排序后的list集合的最大值。

      (3)binarySearch方法是通过二分法获取list集合内元素的角标,如果集合内不存在该元素,则返回该元素的插入位置加一的负数。

      (4)fill方法是使用指定的元素替换list集合中所有的元素,它的内部原理是通过indexOf方法获取元素的角标,在通过set方法更改该角标上的元素。

      (5)reverse方法是反转list集合中的元素。

      (6)reverseOrder方法是返回一个比较器,逆转实现Comparator接口的Collection的自然顺序。

      (7)swap方法用于置换指定角标的两个元素的位置。

      (8)synchronizedList、synchronizedSet、synchronizedMap方法是将集合变成线程同步的,在方法内部定义了内部类重写了Collection集合的方法,将其内部的代码写成Synchronized代码块,并使用同一把锁,从而实现同步的效果。

三、Arrays

        Arrays是用于操作数组的工具类,里面也全是静态方法,其中的asList方法是将数组变成List集合,这样就可以使用集合的思想和方法来操作数组中的元素,但不可以进行增删,因为数组的长度是有限的,如果增删会抛出不支持的操作异常。同样的在Collection集合内也定义了toString方法,当把数组作为参数传递给该方法时,指定类型的数组长度如果小于集合的size,那么方法内部会创建一个新的数组,长度为集合的size,如果数组长度大于集合的size,就会传入该数组,所以创建刚刚好的数组最优,而将集合变为数组的目的是限制对元素的操作。

四、其他对象

       1、System:System是一个最终类,类中的方法和属性都是静态的,它不能创建对象,通过getProperties获得存储系统的属性信息的Properties集合,该集合是HashTable的子类,可以通过HashTable的方法取出其中的元素,Properties集合中存储的都是字符串。我们也可以通过setProperty的方法设置属性信息,也可以在JVM启动时通过java -Dkey=value的方式动态加载一些属性信息。

       2、Runtime:每一个java应用程序都有一个Runtime类实例,使应用程序与运行环境相连接,该类并没有通过提供构造函数,但其中却有非静态方法,我们需要通过静态的getRuntime方法获取Runtime对象,这是一个丹利设计模式的实例。Runtime中的大部分都是抽象方法,因为调用的是底层资源,不需要我们进行操作,同时提过了exec方法开启线程,destroy方法关闭子进程。

       3、Date:日期类,可以创建对象,并通过SimpleDateFormat(位于java.text包中)对日期进行格式化。

            Calendar:日历类,是一个抽象类,通过getInstance方法获得对象,在该类中对年、月、日等基本信息都进行了封装,我们可以通过访问对象的属性Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_MONTH等方法获取日历信息,也可以通过set方法设置年月日,add方法给指定的字段加时间段,值得注意的是显示的月份要加一才是实际的月份,所以我们在设置月份时也要设置我们想要的月份减一。

       4、Math:包含了基本数据运算的方法,我们常用的是ads获取绝对值方法,ceil和floor方法都是获取double型整数,ceil方法是获取大于等于指定doule数据的最小整数,floor方法是获取小于等于这个double数据的最大整数。round方法是四舍五入获取指定double数据的int型数据,pow方法是求指定数据的指定次幂,在该类中还有一个重要的方法random,该方法用于获取0到1之间包括0不包括1的随机double数据,我们也可以通过通过创建Random类调用nextInt方法指定int数值,获取0到int之间的随机数。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值