工具类:将多个类中相同功能的函数抽取到一个新定义的类中,独立封装,以便复用。这个新定义的类就称为工具类。


      从静态化的角度来看,由于工具类中的方法都没有使用到当前方法所属对象的特有数据,所以,应该把工具类中的方法静态化。


       构造方法还是能够被调用以建立工具类对象。为了严谨,工具类不应该有对象产生。工具类中的构造方法要私有化。


【工具类总结】:方法全部静态化,构造方法全部私有化。


下面简单介绍Collections类和Arrays类



Collections类:里面的方法都是方便对Collection进行操作的静态方法,可以通过类名直接调用,而不用建立相应的类的对象。


几个常用的方法:


1、排序:Collections.sort(List list)排序前提:list中的元素必须具有可比性,也就是实现了comparable接口。Collections.sort(Listlist,Comparator com)排序时指定比较器对元素进行排序。


2、Collections.max(List list)前提也元素可以排序,返回值为List中的元素的类型。


3、Collections.binarySearch(Listlist)二分查找,前提是该list已经排好序,返回元素在list中的索引。


4、Collections.fill(List list,T obj)将list中的所有元素替成指定元素。


5、Collections.repalceAll(List list,ToldValue,T newValue),将指定元素的值替换为新值。


6、Collections.reverse(List list)将list中的元素顺序翻转。


7、Collections.reverseOrder()返回一个比较器,该比较器强行逆转了Comparable接口的对象的自然顺序。


8、Collections.reverseOrder(Comparatorcom)返回一个比较器,该比较器强行逆转了指定Comparator所实现的顺序。


9、Collections.shuffle(List l)将list中的元素重新随机排列一次。


10、 synchronizedXxx()将指定的集合转换成线程同步的集合。


11、 Collections.toArray(c)把集合c转换成数组。


方法演示代码:


package collectionTest; 

 

  import java.util.*; 

 

  class myComparator implements Comparator<Person> 

 

  { 

 

   public int compare(Person p1,Person p2) 

 

   { 

 

    int num = p1.getAge()-p2.getAge(); 

 

    if(num ==0) 

 

     return p1.getName().compareTo(p2.getName()); 

 

    return num; 

 

   } 

 
 

    

 

  } 

 

  public class CollectionsTest { 

 
 

   /** 

 

    * @param args 

 

    */ 

 

   public static void main(String[] args) { 

 

    // TODO Auto-generated method stub 

 

    List<String> l = new ArrayList<String>(); 

 

    l.add("abc"); 

 

    l.add("def"); 

 

    l.add("wed"); 

 

    l.add("sdf"); 

 

    System.out.println(l); 

 

    Collections.sort(l);//String实现了Comparable接口,使用其默认的自然方法排序。 

 

    System.out.println(l); 

 

    List<Person> pl = new ArrayList<Person>(); 

 

    pl.add(new Person("zhang","男",20)); 

 

    pl.add(new Person("wang","女",23)); 

 

    pl.add(new Person("li","女",52)); 

 

    pl.add(new Person("zhao","男",25)); 

 

    pl.add(new Person("liu","男",20)); 

 

    System.out.println(pl); 

 

    Collections.sort(pl,new myComparator());//用自己定义的比较方法排序 

 

    System.out.println(pl); 

 

    System.out.println(Collections.max(pl,new myComparator()));//查找年龄最大的人。 

 

    System.out.println(Collections.binarySearch(pl, new Person("zhang","男",20))); 

 

   } 

 

    

 

  }



Arrays类:存放对array进行操作的静态方法。,通过类名直接调用。


常用方法:


1、Arrays.toStirng(arr)将数组转换成字符串。


2、Arrays.asList(arr)将数组转换成List集合。把数组编程集合的好处:可以使用集合的思想来操作元素,比如判断元素是否在集合中存在。


注意:1、转变后的List集合不能使用集合的增删方法,会出现UnsupportedOperationException.


2、如果数组中的元素都是对象,那么变成集合时,数组中的元素变成集合中的元素。如果数组中的元素都是基本数据类型,那么转化时会将数组变成集合的一个元素存进集合。


3、Arrays.equals(arr1,arr2)判断两个数组是否相等。


4、Arrays.fill(arr,value)将数组中的所有元素都设置为value。


5、Arrays.sort(arr)对数组中的元素进行排序。


6、Arrays.copyOf(arr,int length)返回arr数组中前length个元素的拷贝。


方法演示代码:




package collectionTest; 

 

  import java.util.*; 

 

  public class Arraystest { 

 
 

   /** 

 

    * @param args 

 

    */ 

 

   public static void main(String[] args) { 

 

    // TODO Auto-generated method stub 

 

    int[] arr1 = new int[]{1,2,3,4}; 

 

    int[] arr2 = new int[]{1,2,3,4}; 

 

    if(Arrays.equals(arr1, arr2))//判断两个数组是否相同 

 

     System.out.println("两个数组相等!"); 

 

    int[]arr3 = Arrays.copyOf(arr1, 3);//复制数组 

 

    System.out.println(Arrays.toString(arr3)); 

 

    Arrays.fill(arr3,1,3, 1);//为数组填充其他值 

 

    System.out.println(Arrays.toString(arr3)); 

 

    Arrays.sort(arr3);//对数组进行排序 

 

    System.out.println(Arrays.toString(arr3)); 

 

    int dex = Arrays.binarySearch(arr3, 2);//对排序后的数组进行二分查找。 

 

   } 

 
 

  }