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

JAVA工具类——(Collections类和Arrays类)

程序员文章站 2024-01-14 13:50:10
...

Collections类和Arrays类都是JAVA提供的一个集合操作工具类,其包含的方法都是静态方法,为什么是静态的方法,就是可以通过类名直接调用,不需要进行实例化对象,方便引用。

一. Arrays类中的方法,方便对数组进行排序,查找,替换等一系列操作,以下列举了Arrays中比较常用的几种方法:

1:toString(array):转换成字符串;

2:**sort(array)**排序;

3: copyOf(array,Length):复制成一个新的数组;

4:binarySearch(array,value):查询某一个元素的下标;

5:**fill(array,value);**所有的元素都赋值为value;

6: boolean equals(array1,array2);将二个数组进行比较;

7:hashCode(Array),根据指定数组的内容返回哈希码,确定是不是同一个数组;****

1.将数组转换成一个字符串,将字符串输出就是把数组进行输出,可以不用for循环

  String toString(array)//将一个数组array转换成一个字符串
     int[] a={12,11,16,22,28};
     int[] b={12,11,16,22,28};
     int[] c={33,12,26,88,66,13};   
     System.out.println(Arrays.toString(a));先转换成字符串,在进行输出;
             [12, 11, 16, 22, 28]

2.将数组进行升序排列:其操作是自然顺序(即按照数字从大到小或者按照字母)排列指定的数组。

 sort(array)//对数组array的元素进行升序排列,一种是按照数字来进行排序;一种是按照首字母来进行排序;
     Arrays.sort(a);
     [11, 12, 16, 22, 28]
     //按照字母来进行排序;
     String[] m={"a","t","b","c","m"};
      Arrays.sort(m);
      [a, b, c, m, t]

      因为Arrays里面没有反转元素的顺序,要想从小到大;可以利用for循环进行;
     for (int i = a.length-1; i >0 ; i--) {
        System.out.println(a[i]);
    }
               28   22  16  12  11

3.将数组array复制成一个长度为length的新数组,其返回类型要与复制额数组一致;如果是int类型的数组,新增加的数组元素填充0;String类型的填充null;

  copyOf(array,Length)
   int[] a1=Arrays.copyOf(b,8);
   [12, 11, 16, 22, 28, 0, 0, 0]
   [a, b, c, m, t, null, null, null]

4.查询元素值value在数组array中的:下标(前提是要求元素已经按升序进行排列)

 int binarySearch(array,value);//得到的是一个int类型的数;
 int index=Arrays.binarySearch(a1,16);
    System.out.println(index);

5.把数组array所有的元素都赋值为value;

    void fill(array,value);
    Arrays.fill(a,88);
    System.out.println(Arrays.toString(a));
    [88, 88, 88, 88, 88]

6.将二个数组进行比较,如果长度,数值相等则返回true;

     boolean equals(array1,array2)
     System.out.println(Arrays.equals(a,b));
     System.out.println(Arrays.equals(a,c));
          true
          false

7.Arrays里面还有一个hashCode(Array)方法,根据指定数组的内容返回哈希码;这里普及一下什么是哈希码:

在Java中,哈希码代表了对象的一种特征,例如我们判断某两个字符串是否==,如果其哈希码相等,则这两个字符串是相等的。其次,哈希码是一种数据结构的算法。常见的哈希码的算法有:

(1):Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。

(2):String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串内容相同,返回的哈希码也相同。
(3):Integer类,返回的哈希码就是Integer对象里所包含的那个整数的数值,例如Integer i1=new Integer(100),i1.hashCode的值就是100 。由此可见,2个一样大小的Integer对象,返回的哈希码也一样。

     int [] c1=a;
    System.out.println(Arrays.hashCode(a));--  112607991
    System.out.println(Arrays.hashCode(c1));-- 112607991
    System.out.println(Arrays.hashCode(b));-- 40055190
    System.out.println(Arrays.hashCode(c));--1843762319
    可以看出,地址相同则同一个数组,但是在String类里面重写了该方法,就像重写了equals方法一样;

以上就是关于Arrays里面的常用的一下方法;接下来介绍一下与之对应的在集合中的Collections方法:
二.Collection和Collections不同,前者是集合的操作类,后者是集合接口;
Collections提供的常用静态方法有以下几种:
(1):sort():排序;
(2):reverse():反转元素顺序;
(3):max()\min():查找最大、最小值;
(4):binarySearch():查找;

下面来进行介绍:
(1):sort():排序;

    list.add("apple");
    list.add("banner");
    list.add("orange");
    
     Collections.sort(list);
      for (String m : list
    ) {
        System.out.print(m+"\t");
    }
     结果:apple	banner	orange//按照字母进行排序;

(2):reverse():反转元素顺序;

   Collections.reverse(list);
    for (String s : list
    ) {
        System.out.println(s);
    }
  结果:  orange      banner      apple

(3):max()\min():查找最大、最小值;

    System.out.println(Collections.max(list));
    System.out.println(Collections.min(list));

(4):binarySearch():查找;

     System.out.println("查找特定元素");
     System.out.println(Collections.binarySearch(list, "orange"));
       查找特定元素
       2

以上只是针对集合中只有单个属性进行的系统判断,且该属性要么是数字,要么是字母;也就是可以根据自然顺序进行判断,按照数字大小或者是按照字母表的顺序来进行判断;
在JAVA中,如果想要实现一个类的对象之间的比较大小,那么这个类就要实现Comparable接口。此接口强行对实现它的每一个类的对象进行整体排序,这种排序被称为类的自然排序,类的comparaTo()方法被称为它的自然比较方法,此方法用于比较此对象与指定对象的顺序,如果该对象小于,等于,或者大于指定对象,则分别返回负整数,零或整数。
实现此接口的对象列表(和数组)可以通过Collections.sort()方法(和Arrays.sort()方法)进行自动排序;

 public class Student implements Comparable 
 
 public int compareTo(Object obj) {
    Student student = (Student) obj;
    if (this.age == student.age) {
        return 0;
    } else if (this.age > student.age) {
        return 1;
    } else {
        return -1;
    }
}
重写Comparable接口中的compareTo()方法后,才能使用Collections.sort();并且这种排序只能针对List有序的接口,像Map和Set因为无序都不行,注意:List接口中的存放的元素,必须实现了Comparable接口的元素才可以!
相关标签: JAVA工具类 java