• 刷Leetcode等算法题时一些很实用的辅助方法锦集--java版


    一、数组

        1、使用Arrays.sort(int[] a)进行排序

            底层采用的是快速排序算法实现的:时间复杂度为O(nlogn),空间复杂度O(logn),不稳定。默认是从小到大排序。

    1 int[] arr = new int[]{2, 9, 6, 8, 4, 3};
    2 Arrays.sort(arr);
    3 System.out.println(Arrays.toString(arr));

    打印结果:

    [2, 3, 4, 6, 8, 9]

    参数可以是其它基本数据类型,也可以是自定义类型,可以通过使用Comparator比较器来自定义排序顺序。

    例如,降序排列:

    1 Integer[] arr = new Integer[]{2, 9, 6, 8, 4, 3};
    2 Arrays.sort(arr, new Comparator<Integer>() {
    3     @Override
    4     public int compare(Integer t0, Integer t1) {
    5         return t1 - t0;
    6     }
    7 });
    8 System.out.println(Arrays.toString(arr));

    打印结果:

    [9, 8, 6, 4, 3, 2]

    2、使用Arrays.toString(int[] arr)将数组组合成字符串

         内部是通过StringBuilder + for 循环来实现的,该方法可以方便调试查看数组的值,而无需自己手动来组装字符串。

    1 int[] arr = new int[]{2, 9, 6, 8, 4, 3};
    2 System.out.println(Arrays.toString(arr));

    打印结果:

    [2, 9, 6, 8, 4, 3]

    同样,该方法的参数数组类型可以是其它数据类型。

    二、ArrayList

         1、使用构造函数或者addAll将一个集合中的内容添加到新的ArrayList中

    1 //构造函数
    2 public ArrayList(Collection<? extends E> c) 
    3 //addAll方法
    4 public boolean addAll(Collection<? extends E> c) 

    内部实现原理:ArrayList内部维护了一个数组,无论是使用构造函数还是addAll方法,都是将给定集合中的元素复制到该数组中。

    1 List<Integer> list = new ArrayList<>();
    2 list.add(1);
    3 list.add(2);
    4 list.add(3);
    5 List<Integer> newList1 = new ArrayList<>(list);
    6 System.out.println(newList1);
    7 List<Integer> newList2 = new ArrayList<Integer>();
    8 newList2.addAll(list);
    9 System.out.println(newList2);

    打印结果:

    [1, 2, 3]
    [1, 2, 3]

      2、ArrayList与数组互相转化

        (1)使用list.toArray()将ArrayList转为数组

    1 List<Integer> list = new ArrayList<>();
    2 list.add(1);
    3 list.add(2);
    4 list.add(3);
    5 Object[] a = list.toArray();
    6 System.out.println(Arrays.toString(a));

    打印结果:

    [1, 2, 3]

        (2)使用Arrays.asList(数组) 将数组转为ArrayList

    1 Integer[] arr = new Integer[]{2, 9, 6, 8, 4, 3};
    2 List<Integer> arrList = Arrays.asList(arr);
    3 System.out.println("size=" + arrList.size() + ";arrList=" + arrList);

    打印结果:

    size=6;arrList=[2, 9, 6, 8, 4, 3]

    3、使用Collections.reverse(list) 倒转ArrayList中的元素

    1 List<Integer> list = new ArrayList<>();
    2 list.add(1);
    3 list.add(2);
    4 list.add(3);
    5 Collections.reverse(list);
    6 System.out.println(list);

    打印结果:

    [3, 2, 1]

    、字符串

        1、按照多个空格,对字符串进行分割:split(“\s+”)或者split(" +")

        例如:

    1  String s = "leetcode    is     very     good!";
    2  String[] arr = s.split("\s+"); //或者s.split(" +");
    3  System.out.println(Arrays.toString(arr));

    打印结果:

    [leetcode, is, very, good!]

     2、去掉字符串首尾空字符串:trim()

    1 String s = "  ab cd   ";
    2 Sytem.out.println(s.trim());

    打印结果:

    ab cd

    3、拼接字符串:join()

    1 String[] strArray = {"ab","cd","ef"};
    2 System.out.println(String.join(" ",strArray));

    打印结果:

    ab cd ef

    这里将数组组合成字符串,用“ ”连接。join的第一个参数可以替换其它的连接符号,第二个参数除了使用数组外,还可以使用LIst,Deque等集合对象

    s

  • 相关阅读:
    linux磁盘扩容脚本不重启
    编译安装redis
    编译安装nginx
    ansible常用模块
    centos7 yum安装ansible
    centos7 salt操作命令
    centos7 yum安装salt
    keep
    MySQL6
    MySQL5
  • 原文地址:https://www.cnblogs.com/andy-songwei/p/14148969.html
Copyright © 2020-2023  润新知