天天看点

java工具类,Arrays,Objects,Collections

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);
           

继续阅读