工具类:Colletions ,Arrays(静态导入,可变参数,强循环)

时间:2022-08-27 09:59:20

一、Collecti    专门用来操作集合的工具类,没有构造函数,全静态方法。

    常用方法:
      static <T extends Comparable<? super T>> void sort(List<T> list) :
                                  对一个元素自带比较方法的List集合排序。
      static <T> void sort(List<T> list, Comparator<? super T> c) :
                                  对一个元素不带比较方法的List集合排序(自己建立比较器。)

      static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) :
                                  对一个有序的List集合进行二分查找。
      static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) :
                                  对一个元素无排序方法进行二分查找。

      static <T> void fill(List<? super T> list, T obj) :
                                  使用指定元素取代集合中的所有元素。

      static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) :
                                  使用新值来替换列表中的所有旧值。

      static void reverse(List<?> list) :
                                  反转指定集合中的所有元素。

      static <T> Comparator<T> reverseOrder() :
                                  返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。
      static <T> Comparator<T> reverseOrder(Comparator<T> cmp) :
                                  返回一个比较器,它强行逆转指定比较器的顺序。
                            这两个方法在集合建立的实参列表中传入,或者在sort语句中传入(因为返回的为比较器)。
  

      static void swap(List<?> list, int i, int j) :
                            在指定列表的指定位置处交换元素。
      static <T> List<T> synchronizedList(List<T> list) :
                            返回指定列表支持的同步(线程安全的)列表。(其他集合同有相应方式)

      static void shuffle(List<?> list) : 使用默认随机源对指定列表进行置换。
      static void shuffle(List<?> list, Random rnd) : 使用指定的随机源对指定列表进行置换。

二、Arrays
    用于操作数组的工具类,没有构造函数,全静态方法。

    常用方法:
      static boolean deepEquals(Object[] a1, Object[] a2) :如果两个指定数组彼此是深层相等 的,则返回 true。

    数组变集合:
      static <T> List<T> asList(T... a) : 返回一个受指定数组支持的固定大小的列表。

      好处:可以使用集合中的思想和方法类操作数组中的元素。

      注意:1、返回的List集合中不能使用增删方法。因为数组长度不能改变,否则会发生异常。

         2、如果数组中的元素都是对象,转成集合时,会将数组中的元素直接转变成集合中的元素。
            如果数组中的元素都是基本数据类型,那么就将数组本身当成元素存入集合。

         3、对于多维数组,<T>应当为低一级别的数组,传入集合的为数组的哈希码。

    集合变数组:
      使用的是Collection接口中的 :

          1、 Object[] toArray() 方法。
          2、 <T> T[] toArray(T[] a) 方法。

      对于方法一,返回的直接是一个Object类型的数组,其长度为集合的

      对于方法二,如果作为实参传入的数组长度小于集合的size,那么方法内部会自动创建一个新数组,长的为size。
        如果传入的数组长度大于集合的size,那么方法内部不会创建新的数组,而是使用传入的数组,不满位为null。
        所以最好创建一个长度等于集合size的数组作为参数传入。

      作用: 为了限定对元素的操作(元素个数不能再改变,即不能进行增删)。

三、强循环。

      1、Iterable接口,实现该接口,将获得构建迭代器的方法(如:Collection)。

          同时,实现这个接口还允许对象成为 "foreach" 语句的目标。(成为强循环语句的目标)

      2、强循环语句格式: for(数据类型 变量名 :被遍历的集合(Cellection)或者数组){ }
              如:for(String s : new ArrayList())
                {
                    (s 指向每次被遍历到的元素)
                }
        优点: 对集合数组进行遍历的时候,简化了书写。
        缺点: 有较大的局限性:只能获取集合中的元素,不能对集合进行操作。

            而迭代器除了能获取元素以外,还能remove集合中的元素(ListIterator甚至能添加集合中的元素)
            而传统for语句更是功能强大, 除了特定情况建议使用传统for语句。

四、可变参数。

    idk1.5 出现的新特性。

      使用前提条件: 1、在定义形参列表的时候,可能会传入多个相同类型的参数(非硬性条件)
              2、每个参数列表只能定义一个可变参数,并且要求放于参数列表的最后面。(硬性要求)

      格式:
              methed(参数类型1,参数类型2,..., 可变参数的参数类型...变量名)
        如:               method(String s, int i, Demo...d) :传一个字符串、一个整形、一个Demo类型的可变参数。

          实现解释: 在调用方法传递参数时,到了Demo类型时,可以传入 多个 、一个或者 0 个参数。
                底层会隐式的将对应参数封装成对应类型的数组,传入同类型参数个数就是数组长度。
                之后在方法中遍历取出元素操作即可。

       如:      我们调用上述例子: method("sd",8,demo1,demo2,demo3);
                               实际接收参数为:s= "sd"; i = 8; Demo [] d = {demo1,demo2,demo3}

五、StaticImport 静态导入。

    jdk1.5 出现的新特性。

      为了能够使用其他的包中的类,我们可以导入这个类:
        如: import java.util.*; :导入了java.util包中的所有类。

      借助相同的原理,我们要使用其他的类中的静态成员时,可以静态导入这个类中的静态成员。
        如: import static java.util.Collections.* ; :导入了Collections中的所有静态成员。
           import static java.util.Arrays.*; :导入了Arrays中所有的静态成员。
           import static Java.lang.System.*: : 导入了System中的所有静态成员。

      好处: 再使用上述类中的导入后,使用这些类的静态成员时可以不用写类名

        如: Collections.sort(List<T> list) 可以写为: sort(List<T> list);
          Arrays.deepEequals(O[] o1, O[] o2); 可以写为 : deepEquals(O[] o1, O[] o2);
          System.out.println(); 可以写为: out.println();

      注意: 前面学过,在包导入中,如果两个包中有相同名字的类,实例化该类的时候,必须指明包名。
          同理,在类的静态导入之后,如果方法或成员重名时,应当指明方法所属的对象或者类名,
          否则,系统按照就近原则查找。

工具类:Colletions ,Arrays(静态导入,可变参数,强循环)的更多相关文章

  1. 集合框架-工具类-JDK5&period;0特性-函数可变参数

    1 package cn.itcast.p4.news.demo; 2 3 public class ParamterDemo { 4 5 public static void main(String ...

  2. Day 11:静态导入、增强for循环、可变参数的自动装箱与拆箱

    jdk1.5新特性-------静态导入 静态导入的作用: 简化书写. 静态导入可以作用一个类的所有静态成员.  静态导入的格式:import static 包名.类名.静态的成员: 静态导入要注意的 ...

  3. Java笔记&lpar;二十四&rpar;&hellip&semi;&hellip&semi;集合工具类Collections&amp&semi;Arrays

    Collections 集合框架的工具类,方法全部为静态 Collections与Collection的区别 Collection是集合框架的一个顶层接口,里面定义了单列集合的共性方法 Collect ...

  4. Collections 工具类和 Arrays 工具类常见方法

    Collections Collections 工具类常用方法: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void revers ...

  5. Java精选笔记&lowbar;集合概述&lpar;Collection接口、Collections工具类、Arrays工具类&rpar;

    集合概述 集合有时又称为容器,简单地说,它是一个对象,能将具有相同性质的多个元素汇聚成一个整体.集合被用于存储.获取.操纵和传输聚合的数据. 使用集合的技巧 看到Array就是数组结构,有角标,查询速 ...

  6. java工具类之Arrays、Collections以及比较器

    一.Comparable和Comparator的详解 Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实 ...

  7. 57&period; Collections&lpar;list的工具类&rpar;、Arrays(数组的工具类)

    List集合的工具类(Collections): 注意:Collection是单列集合的根接口  Collections是操作集合对象的工具类 1.对list集合排序: sort(List) 根据自然 ...

  8. LY&period;JAVA面向对象编程&period;工具类中使用静态、说明书的制作过程、API文档的使用过程

    2018-07-08 获取数组中的最大值 某个数字在数组中第一次出现时的索引 制作说明书的过程 对工具类的使用 获取数组中的最大值 获取数字在数组中第一次出现的索引值 API的使用过程 Math

  9. 【Java学习笔记之十二】Java8增强的工具类:Arrays的用法整理总结

    本文将整理 java.util.Arrays 工具类比较常用的方法:  本文介绍的方法基于JDK 1.7 之上.  1.  asList方法 @SafeVarargs public static &l ...

  10. Asp&period;Net 常用工具类之Office—Excel导入(5)

    之前在做一个项目的时候,客户方面只提供了一份简单的Excel文件,且要跟现有数据进行对接. 当时想到的是如果数据量不大,可以Excel一条一条加进去,无奈数据有几十兆!!! 换了一种思维,进行了导入: ...

随机推荐

  1. C&num;编写window服务,一步一步(1)

    Window服务是啥,这里就不废话了,如何用在哪里用也不废话了,这里我这篇文章只是详述了我在vs2012中创建window服务的经过,希望对你有所帮助. 另外:我在编写服务过程中参考了 Profess ...

  2. 谈谈用ASP&period;NET开发的大型网站有哪些架构方式&lpar;成本&rpar;

    在上篇文章里(http://www.cnblogs.com/ms0017/archive/2011/07/26/2117676.html),列举了国内外用ASP.NET开发的大型网站有哪些.最后提到了 ...

  3. mysql 汉字乱码

    原因:mysql server character设置问题 一.检查mysql server 安装目录下my.ini文件 找到如下设置 [mysql] default-character-set = ...

  4. 编译安装-Percona 5&period;6

    CentOS 6.4编译安装Percona 5.6.16 Percona 下载地址:http://www.percona.com 一.卸载原有MySQL检查是否安装有MySQL Server: rpm ...

  5. Jquery LigerUI框架学习(一)

    ligerUI框架是一个很丰富的后台框架模板,具有简洁大方的后台样式框架,还有很多灵活的控件,方便开发人员使用: 把昨天学习的成功拿出来供大家学习学习: 首先我们要去ligerUI官网下载Jquery ...

  6. python小练习(自己瞎倒腾)

    python小练习 在网上无意中看到一个问题,心血来潮写了写,觉得比较有意思,以后遇到这种有意思的小练习也记录下. #!/usr/bin/env python # -*- coding:utf-8 - ...

  7. github 进阶说明

    目录 github 进阶说明 前言 三个目录树 重置 git reset 增加路径的reset 检出 checkout 带路径的checkout 仓库 数据对象 其他 资料 github 进阶说明 前 ...

  8. 斐讯N1折腾记

    斐讯N1折腾记:运行 Linux 及优化  2018-06-23  37条评论  4,445次阅读  11人点赞 最后更新时间:2019年03月10日 咳咳咳,上篇教程教大家给斐讯 N1 降级并且刷了 ...

  9. Linux学习6-套接字

    套接字 1.什么是套接字? 套接字(socket)是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行. 2.套接字应用程序是如何通过套接字来维持一个连接的 ...

  10. POJ 2513 Colored Sticks(Tire&plus;欧拉回(通)路判断)

    题目链接:http://poj.org/problem?id=2513 题目大意:你有好多根棍子,这些棍子的两端分都别涂了一种颜色.请问你手中的这些棍子能否互相拼接,从而形成一条直线呢? 两根棍子只有 ...