Collections集合工具类、Arrays工具类、其他常用类:System,Runtime,Date,Calendar,Math

http://blog.csdn.net/rock_ray/article/details/21276993

1.  Collections集合工具类

Collections类是java.util包中的一个集合的工具类,此类中提供了一些操作集合的静态方法,扩展了集合本身的功能。

这个类中的方法都是静态的,不需要创建对象。

CollectionsCollection的区别:

1Collectionsjava.util包中的一个类,是针对集合的一个工具类,提供一些静态方法对集合操作,实现集合功能的扩展。

2Collectionjava.util包中的一个接口,是所有集合的父接口,继承于它的主要有Set集合和List集合,Collection中提供集合共性方法声明。

 

1.1  Collections工具类部分方法

Collections工具类中的部分方法:

 

sort(list)sort方法对List集合进行排序(自然排序)。

sort(list, comparator):用指定比较器,对List集合进行排序。

max(collection):根据自然顺序,返回集合的最大值。

max(collection, comparator):根据比较器顺序,返回集合的最大值。

binarySearch(list, key):使用二分查找法搜索List集合,返回元素在集合中的位置,若不包含返回插入点,若超出则返回集合长度。

 

Collections工具类的代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2.   
  3. class CollectionsDemo{  
  4.     public static void main(String[] args){  
  5.         binarySearchDemo();  
  6.     }  
  7.       
  8.     public static void binarySearchDemo(){  
  9.         List<String> list = new ArrayList<String>();  
  10.           
  11.         list.add("abcd");  
  12.         list.add("aaa");  
  13.         list.add("z");  
  14.         list.add("kkkkk");  
  15.         list.add("qq");  
  16.         Collections.sort(list); //给list集合排序  
  17.           
  18.         sop(list);  
  19.           
  20.         int index1 = Collections.binarySearch(list,"aaa"); //binarySearch()二分搜索,返回元素在集合中的索引。  
  21.         sop("index1: "+index1);  
  22.         int index2 = Collections.binarySearch(list,"aaaa");  
  23.         sop("index2: "+index2);  
  24.         int index3 = Collections.binarySearch(list,"zzz");  
  25.         sop("index3: "+index3);  
  26.           
  27.         Collections.sort(list,new StrCom()); //用指定比较器给list集合排序  
  28.         sop(list);  
  29.           
  30.         int index = Collections.binarySearch(list,"aaa",new StrCom());  //根据比较器顺序,找出索引。  
  31.         sop("index: "+index);  
  32.     }  
  33.       
  34.     public static void maxDemo(){  
  35.         List<String> list = new ArrayList<String>();  
  36.           
  37.         list.add("abcd");  
  38.         list.add("aaa");  
  39.         list.add("z");  
  40.         list.add("kkkkk");  
  41.         list.add("qq");  
  42.           
  43.         sop(list);  
  44.           
  45.         String max = Collections.max(list); //max方法返回集合的最大值(自然顺序),集合具备比较性,实现Comparable接口  
  46.           
  47.         sop("max: "+max);  
  48.           
  49.         String max1 = Collections.max(list,new StrCom()); //返回集合中的最大值(比较器顺序)  
  50.           
  51.         sop("max1: "+max1);  
  52.     }  
  53.       
  54.     public static void sortDemo(){  
  55.         List<String> list = new ArrayList<String>();  
  56.           
  57.         list.add("abcd");  
  58.         list.add("aaa");  
  59.         list.add("z");  
  60.         list.add("kkkkk");  
  61.         list.add("qq");  
  62.           
  63.         sop(list);  
  64.           
  65.         Collections.sort(list);  //使用Collections工具类的sort()方法排序。自然顺序。  
  66.           
  67.         sop(list);  
  68.           
  69.         Collections.sort(list,new StrCom());  //比较器顺序。  
  70.           
  71.         sop(list);  
  72.           
  73.     }  
  74.       
  75.     public static void sop(Object obj){  
  76.         System.out.println(obj);  
  77.     }  
  78. }  
  79. class StrCom implements Comparator<String> {  
  80.     public int compare(String s1,String s2){  
  81.         if(s1.length()>s2.length())  
  82.             return 1;  
  83.         if(s1.length()<s2.length())  
  84.             return -1;  
  85.         return 0;  
  86.     }  
  87. }  

1.2  Collections工具类部分方法

 

Collections工具类的部分方法:

 

fill(list, A)方法:把集合中的所有元素,替换成指定元素A

replaceAll(List, A, B)方法:把集合中,所有的旧的指定元素A,替换成新的指定元素B

reverse(list)方法:反转集合中元素的顺序。

swap(list, i, j)方法:交换List集合中,位置i和位置j的两个元素。

shuffle(list)方法:对集合进行重新随机排序。  shuffle:洗牌。

 

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2.   
  3. class CollectionsDemo2 {  
  4.     public static void main(String[] args){  
  5.         shuffleDemo();  
  6.     }  
  7.       
  8.     public static void shuffleDemo(){  
  9.         List<String> list = new ArrayList<String>();  
  10.           
  11.         list.add("abcd");  
  12.         list.add("aaa");  
  13.         list.add("z");  
  14.         list.add("kkkkk");  
  15.         list.add("qq");  
  16.         sop(list);  
  17.           
  18.         Collections.shuffle(list);   //对集合list中的元素,进行随机排序,即洗牌。  
  19.         sop(list);  
  20.     }  
  21.       
  22.     public static void reverseDemo(){  
  23.         List<String> list = new ArrayList<String>();  
  24.           
  25.         list.add("abcd");  
  26.         list.add("aaa");  
  27.         list.add("z");  
  28.         list.add("kkkkk");  
  29.         list.add("qq");  
  30.         sop(list);  
  31.           
  32.         Collections.reverse(list);   //反转list集合中元素的顺序。  
  33.         sop(list);  
  34.     }  
  35.       
  36.     public static void replaceAllDemo(){  
  37.         List<String> list = new ArrayList<String>();  
  38.           
  39.         list.add("abcd");  
  40.         list.add("aaa");  
  41.         list.add("z");  
  42.         list.add("kkkkk");  
  43.         list.add("qq");  
  44.         sop(list);  
  45.           
  46.         Collections.replaceAll(list,"aaa","pp");   //用"pp"替换集合list中的所有"aaa"。  
  47.         sop(list);  
  48.     }  
  49.       
  50.     public static void fillDemo(){  
  51.         List<String> list = new ArrayList<String>();  
  52.           
  53.         list.add("abcd");  
  54.         list.add("aaa");  
  55.         list.add("z");  
  56.         list.add("kkkkk");  
  57.         list.add("qq");  
  58.           
  59.         sop(list);  
  60.         Collections.fill(list,"pp");  //用"pp"替换集合list的所有元素。  
  61.         sop(list);  
  62.     }  
  63.       
  64.     public static void sop(Object obj){  
  65.         System.out.println(obj);  
  66.     }  
  67. }  

1.3  Collections工具类部分方法

Collections工具类的部分方法:

 

reverseOrder():返回一个比较器Comparator,此比较器的顺序与自然顺相反,即反转了自然顺序。

reverseOrder(cmp):返回一个比较器,此比较器的顺序与指定比较器cmp的顺序相反,即反转指定比较器的顺序。

synchronizedCollection(coll)方法:返回指定集合coll的线程同步(线程安全的)集合。

synchronizedList(list)方法: 返回指定集合list的线程同步(线程安全的)集合。

synchronizedMap(map)方法:  返回指定集合map的线程同步(线程安全的)集合。

synchronizedSet(set)方法:  返回指定集合set的线程同步(线程安全的)集合。

原理:将集合的所有方法加同一把锁后返回,实现了线程同步。

 

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2.   
  3. class CollectionsDemo3 {  
  4.     public static void main(String[] args){  
  5.         reverseOderDemo_2();  
  6.     }  
  7.       
  8.     public static void reverseOderDemo(){  
  9.         TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());  
  10.                                                  //reverseOrder()返回比较器,其顺序是自然顺序的反顺序。  
  11.         ts.add("a");  
  12.         ts.add("bb");  
  13.         ts.add("ccc");  
  14.         ts.add("dddd");  
  15.         ts.add("eeeee");  
  16.           
  17.         sop(ts);  
  18.     }  
  19.       
  20.     public static void reverseOderDemo_2(){  
  21.         TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrCom()));  
  22.                              //此处带参数的reverseOrder()返回比较器,其顺序是指定比较器的反顺序。  
  23.         ts.add("a");  
  24.         ts.add("bb");  
  25.         ts.add("ccc");  
  26.         ts.add("dddd");  
  27.         ts.add("eeeee");  
  28.           
  29.         sop(ts);  
  30.     }  
  31.       
  32.     public static void sop(Object obj){  
  33.         System.out.println(obj);  
  34.     }  
  35. }  
  36.   
  37. class StrCom implements Comparator<String> {  //字符串长度由小到大排序。  
  38.     public int compare(String s1,String s2){  
  39.         if(s1.length()<s2.length())  
  40.             return -1;  
  41.         if(s1.length()>s2.length())  
  42.             return 1;  
  43.         return 0;  
  44.     }  
  45. }  

2.  Arrays工具类

java.util包中的Arrays类是操作数组的工具类,提供了一些静态方法。

 

数组变集合:

asList():将数组变成List集合。

其他方法还有:equals()deepEquals()binarySearch()copyOf()copyOfRange()fill()hashCode()sort()toString()等等。

 

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2.   
  3. class ArraysDemo{  
  4.     public static void main(String[] args){  
  5.      /* int[] arr = {2,4,6}; 
  6.          
  7.         System.out.println(Arrays.toString(arr));  //返回指定数组内容。 */  
  8.           
  9.         String[] arr = {"abc","cc","kkkk"};  
  10.           
  11.         List<String> list = Arrays.asList(arr);   //把数组变成List集合,可以使用集合的思想和方法来操作数组。  
  12.         sop("contains: "+list.contains("cc"));  
  13.           
  14.       //list.add("qq");  //注意:将数组变成集合,不可以使用集合的增删方法。  
  15.         sop(list);       //因为,数组的长度是固定的。  
  16.                          //如果你增删了,那么会发生UnsupportedOperationException异常。  
  17.                            
  18.         Integer[] nums = {4,5,3};  
  19.         List<Integer> li = Arrays.asList(nums);  
  20.           
  21.         sop(li);   //如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。  
  22.                    //如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。  
  23.     }  
  24.       
  25.     public static void sop(Object obj){  
  26.         System.out.println(obj);  
  27.     }  
  28. }  


集合变数组:Collection接口中的toArray()方法。

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2.   
  3. class ArraysDemo2{  
  4.     public static void main(String[] args){  
  5.         ArrayList<String> al = new ArrayList<String>();  
  6.           
  7.         al.add("abc01");  
  8.         al.add("abc02");  
  9.         al.add("abc03");  
  10.           
  11.         /* 
  12.         1,指定类型的数组到底要定义多长呢? 
  13.         当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的size。 
  14.         所以创建一个刚刚好的数组最优。 
  15.          
  16.         2,为什么要将集合变数组? 
  17.         为了限定对元素的操作,不需要进行增删了。 
  18.         */  
  19.           
  20.         String[] arr = al.toArray(new String[al.size()]);  
  21.           
  22.         System.out.println(Arrays.toString(arr));  
  23.     }  
  24. }  


3.  其他常用类

3.1  System

System类在java.lang包中,描述系统的一些信息。

 

System:类中的方法和属性都是静态的。

System.out:标准输出,默认是控制台。

System.in:标准输入,默认是键盘。

 

Properties getProperties():获取系统属性信息。

PropertiesMap集合的子类,通过调用SystemgetProperties方法返回。

 

getProperties()方法:确定当前的系统属性,返回 Properties

getProperty(key)方法:获取指定键指示的系统属性。

 

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*; //Properties类在java.util包中  
  2.   
  3. class SystemDemo{  
  4.     public static void main(String[] args){  
  5.         Properties prop = System.getProperties(); //获取Properties,系统属性信息。  
  6.           
  7.     /*  因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。 
  8.         那么可以通过map的方法取出该集合中的元素。 
  9.         该集合中存储的都是字符串,没有泛型定义。 */  
  10.           
  11.           
  12.         //如何在系统中自定义一些特有信息呢?  
  13.         System.setProperty("myKey","myValue"); //setProperty()方法在系统中自定义一些特有信息。  
  14.           
  15.         /* 
  16.         //获取所有属性信息。 
  17.         for(Object obj : prop.keySet()){ 
  18.             String value = (String)prop.get(obj); 
  19.              
  20.             System.out.println(obj+"::"+value); 
  21.         } */  
  22.           
  23.         //获取指定属性信息。  
  24.         String value = System.getProperty("os.name");  
  25.         System.out.println("value="+value);  
  26.           
  27.     /*  可不可以在 JVM 启动时,动态加载一些属性信息呢? 
  28.         运行时输入命令: java -D haha=qqqq SystemDemo 
  29.         意思是添加“键值对”:<haha,qqqq>到系统信息中。 */  
  30.         String v = System.getProperty("haha");  
  31.         System.out.println("v="+v);  
  32.     }  
  33. }  


3.2  Runtime

Runtime类在java.lang包中。

 

该类中并没有提供构造方法。

说明不可以new对象,那么会想到该类中的方法都是静态的。

但是发现该类中还有非静态方法。

说明该类中肯定还会提供方法获取本类对象,而且该方法是静态的,并返回值类型是本类类型。

 

由这个特点可以看出该类使用了单例设计模式来完成。

 

该方法是 static Runtime getRuntime();  //返回Runtime类型的本类对象。

 

调用Runtime类型对象的exec()方法,返回一个Process进程对象,exec()方法是非静态的。

Process对象的静态方法destroy()可以杀掉进程。

 

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2.   
  3. class RuntimeDemo  {  
  4.     public static void main(String[] args) throws Exception {  
  5.         Runtime r = Runtime.getRuntime();  
  6.         Process p = r.exec("calc.exe");  //execute,exec()方法执行指定命令,  
  7.                                        //执行环境变量Path目录下的calc.exe程序(计算器)  
  8.         Thread.sleep(2000);  
  9.         p.destroy();  //杀掉进程。  
  10.           
  11.         Process pp = r.exec("notepad.exe SystemDemo.java");  //用notepad程序打开SystemDemo.java文件。  
  12.                     //notepad 和 SystemDemo.java文件,都存放在环境变量Path目录下。  
  13.     }  
  14. }  

3.3  Date

Date类在java.util包中,Date类表示特定的瞬间,精确到毫秒。

 

SimpleDateFormat类对Date返回的日期进行格式化,便于观看。

调用SimpleDateFormatformat(date)方法对Date格式化。

SimpleDateFormat类 在text包中。

 

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2. import java.text.*;  
  3.   
  4. class DateDemo{  
  5.     public static void main(String[] args){  
  6.         Date d = new Date();  //获取当前系统时间,精确到毫秒。  
  7.         System.out.println(d);  //打印的时间看不懂,希望有些格式。  
  8.           
  9.         //将模式封装到SimpleDateFormat对象中。  
  10.         SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日E hh:mm:ss");  
  11.           
  12.         //调用format方法让模式格式化指定Date对象。  
  13.         String time = sdf.format(d);  
  14.           
  15.         System.out.println("time= "+time);  
  16.     }  
  17. }  

3.4  Calendar

Calendarjava.util包中,通过指定字段,获取相应时间,如果只想获取年份,则只需要YEAR字段。

 

getInstance():获取一个Calendar实例,一个默认日历。

get(指定字段):根据指定字段,获取时间。

set(日期):设置当前日历为指定日期。

add(指定字段,增减量):把日历中的指定字段,增加或删除指定时间。

 

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2. import java.text.*;  
  3.   
  4. class CalendarDemo{  //Calendar:日历  
  5.     public static void main(String[] args) {  
  6.         Calendar c = Calendar.getInstance();  //getInstance()获取一个默认日历。  
  7.           
  8.         sop(c.get(Calendar.YEAR)+"年");  //Calendar的get方法获取指定字段,  
  9.                                          //YEAR字段是静态的,且在Calendar类中,需指明所属类。  
  10.         sop((c.get(Calendar.MONTH))+1+"月");  
  11.         sop(c.get(Calendar.DAY_OF_MONTH)+"日");  
  12.         sop("星期"+c.get(Calendar.DAY_OF_WEEK));  
  13.           
  14.         //查表法  
  15.         String[] mons = {"一月","二月","三月","四月","五月","六月","七月","八月","九月"  
  16.                           ,"十月","十一月","十二月"};  
  17.         int index = c.get(Calendar.MONTH);  
  18.         sop(mons[index]);  
  19.           
  20.         c.set(2014,2,17);   //把当前日历的日期设为,2014年3月17日。  
  21.         print(c);  
  22.           
  23.         c.add(Calendar.YEAR,-1);  //当前日历的年份,减少一年。  
  24.         print(c);  
  25.           
  26.         /*  
  27.         Date d = new Date(); 
  28.         SimpleDateFormat sdf = new SimpleDateFormat("YYYY"); 
  29.         String year = sdf.format(d); 
  30.         System.out.println(year); */  
  31.     }  
  32.       
  33.     public static void print(Calendar c){  
  34.         sop(c.get(Calendar.YEAR)+"年");  
  35.         sop((c.get(Calendar.MONTH))+1+"月");  
  36.         sop(c.get(Calendar.DAY_OF_MONTH)+"日");  
  37.     }  
  38.       
  39.     public static void sop(Object obj){  
  40.         System.out.println(obj);  
  41.     }  
  42. }  

3.5  Math类和Random

Math类在java.lang包中。

Math类中提供了一些常用的方法,

例如,random方法产生随机数,ceil方法返回大于指定数的最小整数,floor方法返回小于指定数的最大整数,round方法返回指定数的四舍五入,pow方法进行幂运算。

 

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. class MathDemo{  
  2.     public static void main(String[] args){  
  3.         for(int x=0; x<10; x++){  
  4.             double d3 = Math.random();  //随机大于等于0且小于1的随机double值。  
  5.             sop(d3);  
  6.         }  
  7.     }  
  8.       
  9.     public static void show(){  
  10.         double d = Math.ceil(-16.34);  //ceil方法返回大于指定数据的最小整数。  
  11.         double d1 = Math.floor(12.34);  //floor方法返回小于指定数据的最大整数。  
  12.           
  13.         long l = Math.round(12.54);  //round方法返回指定数据的四舍五入。  
  14.         sop("d="+d);  
  15.         sop("d1="+d1);  
  16.         sop("l="+l);  
  17.           
  18.         double d2 = Math.pow(2,3); //pow(A,B):返回A的B次幂,返回2的3次幂。  
  19.         sop("2的3次幂:"+d2);  
  20.     }  
  21.       
  22.     public static void sop(Object obj){  
  23.         System.out.println(obj);  
  24.     }  
  25. }  

Random类在java.util包中,Random类的nextInt(num)可以返回一个0num之间的随机数,包括首不包括尾。

代码示例:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.util.*;  
  2. class RandomDemo{  
  3.     public static void main(String[] args){  
  4.         Random r = new Random();  
  5.           
  6.         for(int x=0; x<10; x++){  
  7.             int d = r.nextInt(10)+1;  //nextInt(10):返回0和10之间的随机一个值,包括前不包括后。  
  8.             sop(d);  
  9.         }  
  10.     }  
  11. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值