zoukankan      html  css  js  c++  java
  • 集合中的工具类Collections和Arrays

    集合框架的工具类:

    Collections:

    方法sort():

     List<String> list = new ArrayList<String>();
            list.add("gfhd");
            list.add("abc");
            list.add("a");
            list.add("aaaadfs");
    sort(list);//按自然顺序排列,String类型按字符串第一位比较依次往后比较;

    sort(list,new Compare());//按比较器进行排序

    比较器:

    public class Compare implements Comparator<String>{

    public int compare(String o1, String o2) {
         if(o1.length() > o2.length()){
            return 1;
        }
        if(o1.length() < o2.length()){
            return -1;
        }
        return o1.compareTo(o2);
    }
    }

    max(list);//自然顺序最大值

    max(list,new Compare());//比较器排序后的最大值

    Collections.binarysearch(list,对象);//根据默认sort排序查找对象;binarySearch 方法,前提是此集合必须是有序的

    Collections.binarysearch(list,对象,new Compare());//根据比较器排序查找对象;相当于我们调用half方法,折半查找。

    Collections.fill(list."你好");//把list集合里的元素替换成 “你好”

    Collections.replaceAll(list,"A","B");//把A替换成B;

    Collections.reverse(list);//反转集合;

    Arrays

    用于操作数组的工具类,里面都是静态方法,

    Arrays.copyOf(arr,index);arr截取的数组,index为截取长度

    Arrays.fill(arr,index,index1,A);//将arr里的角标 index--index1(包含index但不包含index1)  的元素全部替换成A,

    将数组转换为list集合:

    //如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转换成集合中的元素。
    //如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素进行存储
    int[] arr = {1,2,3,4};
    List<int[]> list = Arrays.asList(arr);
    System.out.println(list);

    Integer[] arr1 = {1,2,3,4};
    List<Integer> list1 = Arrays.asList(arr1);
    System.out.println(list1);

    集合转数组:

    * 当指定类型的数组长度小于集合的size,那么该方法内部会创建一个数组长度为size
    * 当指定类型的数组长度大于了集合的size,就不会新创建数组,而是使用传递进来的数组。
    * 所以创建一个刚刚好的数组最优
     * 为了限定对元素对操作,不需要进行增删了
        String[] arr = list.toArray(new String[list.size()]);
        System.out.println(Arrays.toString(arr));

    传统for循环和高级for循环的区别:

    高级for有局限性,必须有被遍历的目标。比如打印helloworld一百次。
    所以我们在遍历数组的时候希望使用传统for循环。因为传统for循环可以定义角标
    foreach:

    for(String str:list){

      System.out.println(str);

    }

    遍历map集合:
    HashMap<Integer, String> ha = new HashMap<Integer, String>();
    //  实现1:
        Set<Integer> keySet = ha.keySet();
        for(Integer key : keySet){
            System.out.println("key = "+key+"   value = "+ha.get(key));
        }
    //  实现2:
        for(Map.Entry<Integer, String> mm : ha.entrySet()){//ha.entrykeySet()获取key集合
            System.out.println("key = "+mm.getKey()+"   value = "+mm.getValue());
        }

    可变参数

    public static void show(int... arr){//把输入的装进数组里
            System.out.println(arr);
        }
    show(2,4,6,7,89);

    System.out.println(show);结果为[2,4,6,7,89];

    静态导入

    当方法重名时,需要指定具体的包名
    当方法重名时,指定所属的对象或者类

    import java.util.*;
    import static java.util.Arrays.*;// 导入的是Arrays这个类中的所有成员

    其他对象

     

    System

    /*描述系统的一些信息,不能被实例化.他的方法和属性都是静态的

    out代表:标准输出,默认是控制台

    in代表:标准输入,默认键盘

    获取系统属性信息:getProperties()

    Runtime

    Date

    Date d = new Date();
           
    System.out.println(d);
            //将模式封装到SimpleDateFormat对象中
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E HH:mm:ss");
            //调用format方法让模式格式化date对象
            String time = sdf.format(d);
            System.out.println(time);

    Calendar

            Calendar c = Calendar.getInstance();
    //      设置日期
    //      c.set(2017, 4, 26);
    //      add方法对时间量的偏移
            c.add(Calendar.YEAR, -1);
            print(c);
        }
    

    System.out.println(c.get(Calendar.YEAR)+"年");

  • 相关阅读:
    用js完成毫秒格式数据的日期格式化任务
    廖雪峰js教程笔记3
    事务在 更新和 插入中的用法(转自他人)
    左连接 用于 列转行的一个想法
    MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比
    python中的内方法
    波非那切数列
    python修改最大递归数
    odoo开发微信小程序需要的三个包:xmltodict、pycrypto、itsdangerous
    解决json dumps不能序列化datatime数据类型的问题,通过重写JSONEncoder
  • 原文地址:https://www.cnblogs.com/tanghao666/p/7215410.html
Copyright © 2011-2022 走看看