集合框架中的工具类

来源:互联网 发布:下列网络系统安全原则 编辑:程序博客网 时间:2024/06/13 00:43

集合框架的工具类

Collections

1.      排序

public static void sortDemo()

{

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

         list.add("abced");

         list.add("acbde");

         list.add("hh");

         list.add("xbb");

         list.add("ff");

         System.out.println(list);

         Collections.sort(list,new MyComparator());

         System.out.println(list);

         }

2.      折半查找

         publicstatic void binarySearchDemo()

         {

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

                   list.add("abced");

                   list.add("acbde");

                   list.add("hh");

                   list.add("xbb");

                   list.add("ff");

                   list.add("a");

                   //排序

                   Collections.sort(list);

                   System.out.println(list);

                   //折半查找

                   intindex = Collections.binarySearch(list, "ab");

                   intindex_half = halfSearch(list, "ab");

                   System.out.println("index=" + index);

                   System.out.println("index_half=" + index_half);

                  }

3.      最值

public static void maxDemo()

{

           List<String> list = newArrayList<String>();

           list.add("abced");

           list.add("acbde");

           list.add("hh");

           list.add("xbb");

           list.add("ff");

         Collections.sort(list,new MyComparator());

           System.out.println(list);

           String max = Collections.max(list,new MyComparator());

           System.out.println("max="+max);

         }

4.      替换

Collections.fill( ): 将集合中所有的元素替换成指定元素

//自定义 fill方法,把指定部分元素替换掉

public static void myFill(List<String>list, int start, int end, String str)

{

         if(start< 0 || end > list.size()-1)

                   thrownew RuntimeException("区间输入有误");

         for(inti = start; i <= end; i++)

         {

                   list.set(i,str);

         }

}

5.      洗牌(随机排序)

         //洗牌,打乱顺序

         publicstatic void shuffleDemo()

         {

List<String> list = newArrayList<String>();

list.add("abced");

list.add("hh");

list.add("xbb");

list.add("ff");

System.out.println(list);

Collections.shuffle(list);

System.out.println(list);

}

6.      逆置

public static void reverseOrderDemo()

{

           //TreeSet<String> treeSet = newTreeSet<String>(Collections.reverseOrder());//new MyComparator()

           TreeSet<String> treeSet = newTreeSet<String>(Collections.reverseOrder(new MyComparator()));

           treeSet.add("abced");

           treeSet.add("hh");

           treeSet.add("aa");

           treeSet.add("xbb");

           treeSet.add("f");

           for(Iterator<String> iter =treeSet.iterator(); iter.hasNext(); )

           {

                    System.out.println(iter.next());

           }

         }

Arrays:

用于操作“数组”的工具类。里面都是静态方法。

---Arrays.toString(array)

---asList(array):将数组转换成List集合

                   把数组变成List集合的好处:可以使用集合的思想和方法来操作数组中的元素。

                   但是,将数组变成集合后,不可以使用集合的增删方法,因为数组的长度是固定的

1.        toString()方法

         publicstatic void toStringDemo()

         {

                   int[] arr = {2, 3, 4};

                   Stringstr = Arrays.toString(arr);

                   System.out.println(str);

         }

2.        asList()方法,数组变成集合

     public static void asListDemo()

     {

              String [] arr ={"a", "bc", "def"};

              List<String>list = Arrays.asList(arr);

              System.out.println(list);

              /*

              如果数组中的元素是对象,变成集合时,直接转换成集合中的元素,

              如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在

              */

              int [] nums = {1,2, 3};

              List<int[]>list2 = Arrays.asList(nums);

              System.out.println(list2);

              Integer [] nums2= {1,2,3};

              List<Integer>list3 = Arrays.asList(nums2);

              System.out.println(list3);

         }

         Collection接口中的toArray()方法

         为什么要将集合变成数组??

为了限定对元素的操作,不需要进行增删了。

         public static void collectionToArray()

         {

                   ArrayList<String>arrList = new ArrayList<String>();

                   arrList.add("hh");

                   arrList.add("ff");

                   arrList.add("bb");

                   //集合变数组,注意指定数组的长度

                   String [] array =arrList.toArray(new String [arrList.size()]);

                   //数组变字符串

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

         }

3.        常用数学函数

         publicstatic void powDemo()

         {

                   //pow(a,b)返回ab次幂

                   doubleresult = Math.pow(2, 3);

                   System.out.println("pow(2,3) = " + result);

         }

         publicstatic void randomDemo()

         {

                   //随机数

                   for(intcount = 0; count < 10; count++)

                   {

                            intnum = (int)(Math.random()*10 + 1);

                            System.out.println(num);

                   }

         }

         publicstatic void demo1()

         {

                   doublenum1 = Math.ceil(12.26);//向右取整

                   System.out.println("ceil_12.26=  "+num1);

                   doublenum2 = Math.floor(12.26);//向左取整

                   System.out.println("floor_12.26= "+num2);

                   doublenum3 = Math.round(12.26);//四舍五入

                   doublenum4 = Math.round(12.66);

                   System.out.println("round_12.26= "+num3+" ; "+"round_12.66 = "+num4);

         }

Calendar:日历

import java.util.*;

import java.text.*;//日期格式化需要

public class DateDemo

{

         publicstatic void CalendarDemo()

         {

                   //获取年、月、日、星期

                   Calendarcald = Calendar.getInstance();

                   String[] months = {

                                                                                    "一月","二月","三月","四月",

                                                                                    "五月","六月","七月","八月",

                                                                                    "九月","十月","十一月","十二月"};

                   String[] weeks = {

                                               "星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

                   intmon_num = cald.get(Calendar.MONTH);

                   intweek_num = cald.get(Calendar.DAY_OF_WEEK)-1;

                   System.out.print(cald.get(Calendar.YEAR)+" ");

                   System.out.print(months[mon_num]);

                   System.out.print(cald.get(Calendar.DAY_OF_MONTH)+" ");

                   System.out.println(weeks[week_num]);

         }

         publicstatic void printCalendar(Calendar cald)

         {

                   String[] months = {

                                                                                    "一月","二月","三月","四月",

                                                                                    "五月","六月","七月","八月",

                                                                                    "九月","十月","十一月","十二月"};

                   String[] weeks = {

                                               "星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

                   intmon_num = cald.get(Calendar.MONTH);

                   intweek_num = cald.get(Calendar.DAY_OF_WEEK)-1;

                   System.out.print(cald.get(Calendar.YEAR)+" ");

                   System.out.print(months[mon_num]);

                   System.out.print(cald.get(Calendar.DAY_OF_MONTH)+" ");

                   System.out.println(weeks[week_num]);

         }

         publicstatic void CalendarDemo2()

         {

                   //获取自定义时间 add(int field, int amount)

                   Calendarcald = Calendar.getInstance();

                   /*

                   设置时间

                   cald.set(2014,2, 15);

                   */

                  cald.add(Calendar.YEAR, 4);

                   cald.add(Calendar.DAY_OF_MONTH,-2);

                   printCalendar(cald);

         }

         publicstatic void basicDemo()

         {

                   Datedate = new Date();

                   System.out.println(date);

                   //将模式封装到SimpleDateFormat对象中

                   SimpleDateFormatsimpleDF = new SimpleDateFormat("yyyyMMdd Ehh:mm:ss");

                   //调用format方法让模式格式化指定Date对象

                   Stringtime = simpleDF.format(date);

                   System.out.println(time);

         }

         publicstatic void main(String[] args)

         {

                   CalendarDemo2();

         }

}

高级for循环

----格式:

         for(数据类型变量名:被遍历的集合(Collection)或者数组)

         {

         }

对集合进行遍历,只能获取集合元素,不能对集合进行操作

传统for循环和高级for循环的区别:

后者有一个局限性,必须有被遍历的目标。

         publicstatic void forDemo()

         {

                   ArrayList<String>arrList = new ArrayList<String>();

                   arrList.add("hh");

                   arrList.add("bb");

                   arrList.add("ff");

                  

                   for(Stringstr : arrList)//高级for

                   {

                            System.out.print(str+"");

                   }

                   System.out.println("\n"+"--------------");

         }

可变参数

其实就是一种数组参数的简写形式。隐式将这些参数封装成了数组。

注意:可变参数一定定义在其他参数之后

public class ParamMethod

{

         publicstatic void demo(int ... nums)

         {

                   System.out.println(nums);

                  System.out.println(nums[2]);

                   System.out.println(nums.length);

         }

         publicstatic void demo(String ... str)

         {

                   System.out.println(str[2]);

                   System.out.println(str.length);

         }

         //可变参数一定定义在最后

         publicstatic void demo(String str, int ... args)

         {

                   System.out.print(str+":");

                   for(inti = 0; i < args.length; i++)

                   {

                            System.out.print(args[i]+ " ");

                   }

         }

         publicstatic void main(String[] args)

         {

                   demo(1,2, 3, 4, 5);

                   System.out.println("---------");

                   demo("hh","bb", "ff");

                   System.out.println("---------");

                   demo("love",120508, 120702, 121226);

         }

}