java中的工具类

来源:互联网 发布:淘宝高颜值平价零食 编辑:程序博客网 时间:2024/06/06 21:04

java.util包中常用的工具类

Arrays

数组工具类,其中的方法都是静态的。
1、数组转成集合
    List<T> asList(T... a)    //返回一个受指定数组支持的固定大小的列表    //如果a中存放的是基本数据类型,那么返回的List集合中的类型是数组;    //如果a中存放的是引用数据类型,对象,那么数组中的元素直接会转成集合中的元素
2、二分查找
    int binarySearch(x[] a, x key)//二分查找数组a中的元素key的角标    int binarySearch(x[] a, int fromIndex, int toIndex, x key)//二分查找数组a中fromIndex到toIndex-1中key的角标    int binarySearch(x[] a, x key, Comparator<? super x> c)//根据传入的比较器二分查找数组a中的元素key的角标    int binarySearch(x[] a, int fromIndex, int toIndex, x key, Comparator<? super x> c)//根据传入的比较器二分查找数组a中fromIndex到toIndex-1中key的角标    x代表byte/char/double/float/long/int/shor/Object
3、复制数组
    x[] copyOf(x[] a, int newLength)//复制数组a的newLength个元素,如果比a长度短就复制指定长度,如果比数组长度长,多余的用false、null或者0填充。    x[] copyOfRange(x[] a, int from, int to)//复制数组a的from到to-1的内容,返回新的数组。    x代表boolean/byte/char/double/float/long/int/shor/Object
4、比较
    boolean equals(x[] a1, x[] a2)//比较两个数组中的元素是否完全相同,如果相同返回true,否则返回false    boolean deepEquals(Object[] a1, Object[] a2)//深层次比较两个数组    x代表byte/char/double/float/long/int/shor/Object
5、填充
    void fill(x[] a, x value)//使用value填充数组a的元素    void fill(x[] a, int from, int to, x value)//使用value填充数组a的from到to-1.如果from=to,那么填充范围是空    x代表boolean/byte/char/double/float/long/int/shor/Object
6、排序
    void sort(x[] a)//按照大小对数组a中元素进行从小到大的排序
7、数组转成字符串
    String toString(x[] a)//将数组a转成字符串,可以打印数组内容    x代表boolean/byte/char/double/float/long/int/shor/Object

Collections

集合工具类,其中的方法都是静态的。
1、二分查找
    int binarySearch(List<T> list, T key)//使用list集合中元素自身的比较性进行二分查找,返回元素key的角标    int binarySearch(List<T> list, T key, Comparator<? super T> c)//使用比较器c的比较方法进行二分查找,返回元素key的角标
2、复制
    void copy(List<? super T> dest, List<? extends T> src)//将src集合中的元素复制到dest集合中
3、填充
    void fill(List<? super T> list, T obj)//用obj替换list中的所有元素
4、求最值
    T max(Collection<? extends T> coll)//按照coll集合中元素自身比较性进行比较,返回最大值    T max(Collection<? extends T> coll, Comparator<? super T> comp)//使用比较器比较coll集合中元素,返回最大值    T min(Collection<? extends T> coll)//按照coll集合中元素自身比较性进行比较,返回最小值    T min(Collection<? extends T> coll, Comparator<? super T> comp)//使用比较器比较coll集合中元素,返回最小值
5、反转
    void reverse(List<T> list)//将集合中元素顺序进行反转
6、替换
    boolean replaceAll(List<T> list, T oldValue, T newValue)//使用旧值替换新值。    //首先会判断该list中是否包含oldValue,会调用list.contains(oldValue),oldValue.equals(list.e)
7、随机置换
    void shuffle(List<T> list)//随机置换list集合中的元素
8、排列顺序倒置
    Comparator<T> reverseOrder()//根据元素自身比较性的相反方式进行排序    Comparator<T> reverseOrder(Comparator<T> cmp)//根据比较器的相反方式进行排序    可以作为参数传入TreeSet的构造函数中。
9、交换元素顺序

    void swap(List<T> list, int x, int y)//交换角标x和y的元素

Calendar

日历,可以获取日历字段,比如YEAR、MONTH(0-11)、DAYS_OF_MONTH、DAYS_OF_WEEK(1-7)、HOUR、MINUTE、SECOND等。其是工具类中的抽象类,可以通过getInstance()方法获取该实例对象。
1、获取实例对象

    static Calendar getInstance()    如果直接打印该对象,可以看到当前时间对应的日历对象
2、获取日历字段
    int get(int field)    Calendar.YEAR/MONTH/DAY_OF_MONTH/DAY_OF_WEEK/HOUR/MINUTE/SECOND)返回的都是int值    如果采用静态导入,就可以不写Calendar了
3、设置时间
    void set(int year, int month, int date)//设置年月日,其中month应该比实际减1
4、修改时间
    void add(int field, int value)//根据value值对日历字段进行加减运算

Date

日期。可根据需求进行格式化。
需要使用java.text包中的SimpleDateFormat类的format方法

1、获取日期对象    Date d = new Date();2、创建格式化模式    SimpleDateFormat sdf = new SimpleDateFomat("yyyy/mm/dd");    SimpleDateFormat中的时间字段    y:年,M:月,d:月份中的天数,D:年中的第几天,H:24小时制,h:12小时制,m:分,s:秒3、格式化日期    String time = sdf.format(d);

/*工具类的复习*/import java.util.*;import java.text.*;//Rabbit类class Rabbit implements Comparable<Rabbit>{//成员属性是姓名和年龄private String name;private int age;//构造函数Rabbit(String name, int age){this.name = name;this.age = age;}//设置和获取成员属性public String getName(){return this.name;}public int getAge(){return this.age;}public void setName(String name){this.name = name;}public void setAge(int age){this.age = age;}//复写equals方法//此类对象有可能放入集合中,所以需要复写equals方法//同理,hashCode、compareTo、toString等方法都需要复写public boolean equals(Object obj){if(!(obj instanceof Rabbit))return false;Rabbit r = (Rabbit)obj;return this.name.equals(r.name) && this.age == r.age;}//复写hashCode方法public int hashCode(){return this.name.hashCode() + this.age*2;}//复写compareTo方法//使得Rabbit对象具备比较性public int compareTo(Rabbit r){//以年龄比较为主//如果年龄相同,按照姓名排序int num = new Integer(this.age).compareTo(new Integer(r.age));if(num == 0)return this.name.compareTo(r.name);return num;}//复写toString方法//使得输出该对象的时候比较有意义public String toString(){return this.name+"::"+this.age;}}//比较器class Comp implements Comparator<Rabbit>{public int compare(Rabbit r1, Rabbit r2){//以姓名比较为主,按照字母顺序进行排序//如果姓名相同,按照年龄排序int num = r1.getName().compareTo(r2.getName());if(num == 0)return new Integer(r1.getAge()).compareTo(new Integer(r2.getAge()));return num;}}class UtilDemo{//打印日历public static void printCal(Calendar c){int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH);int date = c.get(Calendar.DAY_OF_MONTH);int day = c.get(Calendar.DAY_OF_WEEK);int hour = c.get(Calendar.HOUR_OF_DAY);int minute = c.get(Calendar.MINUTE);int second = c.get(Calendar.SECOND);String[] mons = {"一月", "二月", "三月", "四月","五月", "六月", "七月", "八月","九月", "十月", "十一月", "十二月"};String[] dayofweek = {"", "星期天", "星期一", "星期二","星期三", "星期四", "星期五", "星期六"};System.out.println(year+"年"+mons[month]+dayofweek[day]+"  "+hour+":"+minute+":"+second);}//获取指定年份二月的天数public static int getDayOfFeb(int year){Calendar c = Calendar.getInstance();//设置为指定年year的3.1号c.set(year, 2, 1);//将日期减1c.add(Calendar.DAY_OF_MONTH, -1);return c.get(Calendar.DAY_OF_MONTH);}public static void main(String[] args){//Arrays类//数组转换成集合int[] num = {2, 3, 4, 5};String[] str = "I am a student".split(" ");List<int[]> list1 = Arrays.asList(num);List<String> list2 = Arrays.asList(str);System.out.println("num = "+Arrays.toString(num));System.out.println("list1 = "+list1);System.out.println("str = "+Arrays.toString(str));System.out.println("list2 = "+list2);//Collections类//创建List集合,存储Rabbit对象List<Rabbit> list = new ArrayList<Rabbit>();//添加元素list.add(new Rabbit("rabbit01", 3));list.add(new Rabbit("rabbit05", 2));list.add(new Rabbit("rabbit01", 1));list.add(new Rabbit("rabbit05", 4));list.add(new Rabbit("rabbit02", 2));System.out.println("list = "+list);//使用Rabbit自身比较性进行比较//对集合进行排序//求最大值和最小值//二分查找Collections.sort(list);System.out.println("sort: "+list);System.out.println("max = "+Collections.max(list));System.out.println("min = "+Collections.min(list));System.out.println("(rabbit02::2).index = "+Collections.binarySearch(list, new Rabbit("rabbit02", 2)));System.out.println("(rabbit03::4).index = "+Collections.binarySearch(list, new Rabbit("rabbit03", 4)));//使用比较器对Rabbit进行比较//对集合进行排序//求最大值和最小值//二分查找Comp comp = new Comp();Collections.sort(list, comp);System.out.println("sort: "+list);System.out.println("max = "+Collections.max(list, comp));System.out.println("min = "+Collections.min(list, comp));System.out.println("(rabbit02::2).index = "+Collections.binarySearch(list, new Rabbit("rabbit02", 2), comp));System.out.println("(rabbit03::4).index = "+Collections.binarySearch(list, new Rabbit("rabbit03", 4), comp));//反转Collections.reverse(list);System.out.println("reverse: "+list);//替换Collections.replaceAll(list, new Rabbit("rabbit01", 3), new Rabbit("rabbit0007", 1));System.out.println("replaceAll: "+list);//随机排序Collections.shuffle(list);System.out.println("shuffle: "+list);//交换元素位置Collections.swap(list, 0, 4);System.out.println("swap(0, 4): "+list);//填充Collections.fill(list, new Rabbit("tony", 2));System.out.println("fill: "+list);//创建TreeSet集合,存储Rabbit对象TreeSet<Rabbit> ts = new TreeSet<Rabbit>(Collections.reverseOrder());ts.add(new Rabbit("rabbit01", 2));ts.add(new Rabbit("rabbit03", 5));ts.add(new Rabbit("rabbit02", 5));ts.add(new Rabbit("rabbit02", 1));ts.add(new Rabbit("rabbit01", 2));ts.add(new Rabbit("rabbit01", 4));System.out.println("ts = "+ts);//集合变数组TreeSet<String> ts1 = new TreeSet<String>();ts1.add("hh");ts1.add("hooh");ts1.add("hhooo");ts1.add("hhppp");System.out.println("ts1 = "+ts1);String[] s = ts1.toArray(new String[ts1.size()]);System.out.println("s = "+Arrays.toString(s));//Calendar类printCal(Calendar.getInstance());System.out.println("2018年2月天数为:"+getDayOfFeb(2018));//Date类Date d = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd  HH:mm:ss");String time = sdf.format(d);System.out.println("time = "+time);}}