欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java工具类,Arrays,Objects,Collections

程序员文章站 2022-03-09 19:49:26
...

Arrays数组工具类

               常用方法介绍      (以下方法还有其他参数的重载方法,就不一一列出来了,这只是告诉大家方法的作用,其余重载的方法也相差无几)

                      static   List<T>   asList(T... o)             

                                          传入一个类型的参数,个数不限制,返回该参数类型的集合

List<Integer> list = Arrays.asList(1,2,3,5);
//输出[1, 2, 3, 4, 5]
System.out.println(list);

                   static   int  compare(int[]  a, int[]  b)    

                  比较数组a和数组b的总和,如果a的总和等于b的总和返回0,a的总和大于b的总和返回1,a的总和小于b的总和返回-1

int[] a = {1,2,3,4};
int[] b = {1,2,3,4};
//输出为0
System.out.println(Arrays.compare(a,b))

                static  int[]  copyOf(int[]  original, int  newLength)

                              赋值传入的这数组,另一个参数为要赋值数组的长度,从这个数组的第一个开始,如果超出了这数组的长度,则超出的值默认为0。  

int[] arr = {56,4,6,4,89,0};
int[] ints = Arrays.copyOf(arr, 9);
//输出[56, 4, 6, 4, 89, 0, 0, 0, 0]
 System.out.println(Arrays.toString(ints));

              static   int[]  copyOfRange(int[]  arr, int  from, int  to)

                           赋值指定索引下数组,从from开始到to结束(不包括to)

int[] arr = {56,4,6,4,89,0};
int[] ints = Arrays.copyOfRange(arr,1,3);
//输出[4, 6]
System.out.println(Arrays.toString(ints));

             static  boolean  equalse(int[] arr, int[]  arr1);

                        比较两个数组内容是否一致,一致就返回true,不一致就返回false。

int[] arr = {56,4,6,4,89,0};
int[] arr2 = {56,4,6,4,89,0};
//输出true
 System.out.println(Arrays.equals(arr,arr2));

          static  int  mismatch(int[]  arr, int[]  arr2);

                      比较两个数组,返回数组中第一个相同索引但是不同值得索引,如果数组一样则返回-1

int[] arr = {56,4,6,4,89,0};
int[] arr2 = {56,2,6,4,89,4};
//输出1
System.out.println( Arrays.mismatch(arr,arr2));

          static  void  sort(int[] arr)

                             按数字升序排序数组

int[] arr = {56,4,6,4,89,0};
Arrays.sort(arr);
//[0, 4, 4, 6, 56, 89]
 System.out.println( Arrays.toString(arr));

            static  String  toString(int[]  arr)

                              返回数组的字符串

int[] arr = {56,4,6,4,89,0};
//[56, 4, 6, 4, 89, 0]
System.out.println( Arrays.toString(arr));

 

                


 

Objects工具类,一些类的基本操作工具类

                 static  boolean  equals(Object  o, Object  o1)

                              比较两个对象的地址值是否一致,一致返回true,否则返回false

 Person p1 = new Person("老王",56);
 Person p2 = new Person("老刘",12);
//输出false
System.out.println(Objects.equals(p1,p2));

              我也想多写一点可发现这个类没有什么方法好说的了,哈哈哈

 


Collections集合工具类

             static  <T>  boolean   addAll(Collection<?  super  T>  c, T... element)

                                 添加多个参数到一个集合里面(set集合和list集合都可以),添加成功返回true,否则返回false

 List<String> list = new ArrayList<>();
Collections.addAll(list, "a","b","c","d");
//[a, b, c, d]
System.out.println(list);

         static   void  copy(List<? super T >  dest, List<? super T> src)

                            复制一个list集合的元素到另一个集合

List<String> list = new ArrayList<>();
List<String> list1 = new ArrayList<>();
Collections.addAll(list, "a","b","c","d");

Collections.copy(list,list1);

System.out.println(list1);

          static   boolean   disjoint(Collection<?>  c,  Collection<?>  c1)

                            比较两个集合是否有相同元素,如果没有就返回true,否则返回false

 List<String> list = new ArrayList<>();
  List<String> list1 = new ArrayList<>();
   Collections.addAll(list,"a","c","d");
      Collections.addAll(list1,"a","w","e");
//输出false
      System.out.println(Collections.disjoint(list1,list));

         static  <T>  void  fill(List<?  super  T>  list, Object  o)

                           使用指定元素替换list集合的使用元素

  List<String> list = new ArrayList<>();
        Collections.addAll(list,"a","c","d");
        Collections.fill(list,"1");
        //输出[1, 1, 1]
        System.out.println(list);

          static  int   frequency(Collection<?>  c, Object  o)

                             返回指定元素在集合中出现的次数

 List<String> list = new ArrayList<>();
        Collections.addAll(list,"a","c","d","c");
        //输出1
        System.out.println(Collections.frequency(list,"a"));

           static  <T  extends Object  &  Comparable<?  super  T> >   T  max(Collection<?  extends  T>  c)

                              根据自然排序返回集合的最大值

                                          自然排序:就是java的整数类和浮点数类可以根据大小来排

 List<Integer> list = new ArrayList<>();
        Collections.addAll(list,5,6,2,9,45,12);
        Integer max = Collections.max(list);
        //输出45
        System.out.println(max);

              static  <T>  T  max(Collection<?  extends  T>  coll, Comparator<?   super  T>  com)

                                根据自定义比较器来比较集合的自定义类型,自定义类型要实现Comparator集合

                                          注:该类还有一个获取集合的最小值方法,用法和以上两个方法一样,就是方法名为min,在这里就不一一演示了

 List<Person> list = new ArrayList<>();
        Person p1 = new Person("老王",12);
        Person p2 = new Person("老刘",35);
        Person p3 = new Person("老李",4);
        list.add(p1);
        list.add(p2);
        list.add(p3);
                           //匿名内部内实现Comparator接口自定义比较器
       Person person =  Collections.max(list, new Comparator<Person>() {
            @Override
            //该方法的参数为集合的泛型,拿自定义类型的两个可以比较的属性进行相减
            //例: o1的年龄减去o2的年龄然后返回的就是该集合年龄最大的一个元素
            //  如果o2 减去 o1 返回的就是该集合年龄最小的元素
            public int compare(Person o1, Person o2) {
                return o1.getAge()-o2.getAge();
            }
        });
         //输出 Person{name='老李', age=4}
        System.out.println(person);
  //lambda实现Comparator接口自定义比较器
 Person person =  Collections.max(list,(o1, o2) -> o1.getAge()-o2.getAge()  );

  //输出 Person{name='老李', age=4}
  System.out.println(person);

       static    <T>    boolean  replaceAll(List<T>  list,T  oldVal,  T  newVal);

                   使用指定元素替代,指定集合中出现的全部元素,有就返回true没有就返回false

 List<String> list = new ArrayList<>();
         Collections.addAll(list, "a", "c", "d","a");
        boolean b =  Collections.replaceAll(list,"a","t");
        //true
        System.out.println(b);
        //[t, c, d, t]
        System.out.println(list);

        static   void  reverse(List<?>  list)

                  反转集合元素

List<String> list = new ArrayList<>();
         Collections.addAll(list, "a", "c", "d","5");
         Collections.reverse(list);
         //[5, d, c, a]
        System.out.println(list);

      static   void   shuffle(List<?>  list)

                  随机打乱list集合的顺序

 List<String> list = new ArrayList<>();
         Collections.addAll(list, "a", "c", "d","5");
        Collections.shuffle(list);
        //[c, d, a, 5]
        System.out.println(list);

static <T extends Comparable<? super T>>   void  sort(List<T>  list)

                    根据元素按照顺序的方式排序  ( 针对可以比较元素,不可以比较元素要自定义比较器,)

 List<Integer> list = new ArrayList<>();
 Collections.addAll(list, 1,2,5,1,2,9,6,23,4,6);
Collections.sort(list);
 //[1, 1, 2, 2, 4, 5, 6, 6, 9, 23]
 System.out.println(list);

static <T> void  sort(List<T>  list, Comparator<?  super  T>   c)

             根据自定义比较器排序集合的元素

List<Person> list = new ArrayList<>();
        list.add(new Person("老王",66));
        list.add(new Person("老刘",44));
        list.add(new Person("老李",69));
        list.add(new Person("老黄",67));
        list.add(new Person("老黑",63));
              //匿名内部类实现比较器
        Collections.sort(list, new Comparator<Person>() {
            @Override
            //按照年龄的升序排列,如果是o2.getAge() - o1.getAge()就是降序排列
            public int compare(Person o1, Person o2) {
                return o1.getAge()-o2.getAge();
            }
        });
          //输出44,63,66,67,69,
        for (Person person : list) {
            System.out.print(person.getAge()+",");
        }

   static <T> void  swap(List<T>  list, int  i, int  j)

              集合中指定索引上面的值交换位置

 List<String> list = new ArrayList<>();
         Collections.addAll(list, "aa","dd","tt","vv");
        Collections.swap(list,0,2);
        //[tt, dd, aa, vv]
        System.out.println(list);