java.util 包(时间、集合框架)

来源:互联网 发布:如何优化淘宝排名 编辑:程序博客网 时间:2024/06/03 16:37

     一:有关时间的类

       1. Date类:表示特定的瞬间,精确到毫秒

            如果类中没有重写toString()方法,那么会打印出“类名@地址”。

           三种构造方法:

           (1). Date();

           (2). Date(int y,int m,int d) ;   

                  用这种方法编程,在new后面的Date上会有横线,意思是过时的,可以用,但可能会出现问题,而且存在千年问题,想输出正确的月份,那么在传参数月份时需要减一,因为月份一般从0开始。

          (3). Date(long n);

                  从1970年1月1日00:00:00开始,往后推n毫秒的时间,一般用于科学计算。

            

           getxxx() :    getDate():  得到日期             setxxx()       after(Date a)        before(Date a)

                              getDay():  得到星期几

                              getMonth():得到月份

                              getYear():得到年份

       2. 日历类Calendar

           Calendar无法实例化,它是一个抽象类,要是用它,必须调用其静态方法getInstance()来得到其实例,它实际上是返回了一个该类的直接子类GregorianCalendar的对象,用父类来装载子类。

          该实例对象可以调用set方法,set方法有许多重载函数,其中set(int field,int value)可以按时间分量进行设置,如set(Calendar.YEAR,1997)

             方法:after(Object when)          

                        before(Object when)                 

                        getTime():可以将Calendar类型转化为Date类型          

                        add(int field ,int val):指定分量加val

                        get(int field):获得时间分量

       3. 类GregorianCalendar

             直接使用构造函数进行实例化并初始化, getTime()是获得当前对象的逻辑层面的时间,一般数据层面的月份比逻辑层面少1。

   二:集合框架

        集合框架是用于表示和操纵集合的统一体系结构,其中包含了许多功能强大的集合对象,用于存储,检索和操作数据,Collection对象是将多个元素组成一个单元的对象。

        集合框架包含接口,算法和实现三大组件。

         

           

                                                                                                                                                                                   ---------  上图中,实线为类,虚线为接口

                Collection:用对象就可以存储的无序的集合

                Map:用键值对存储的无序的结合

                List:动态数组,带下标,用对象就可以存储(可以使用for遍历)

                Set:用对象就可以存储的无序的集合(无法使用for遍历,除非用迭代器)

        1.Collection集合

            (1).  部分方法:add(Object c1);  addAll(Collection c2);     size();    isEmpty();   remove(Object c1);  equals(Collection c2)//比的是值     removeAll();    retainAll();   clear()

            tip: 允许存储重复的对象值    

            (2). 获取元素数据

                 1)  Iterator iterator=c1.iterator();

                      while(iterator.hasNext()){

                            Student tmp=(Student)iterator.next();

                            System.out.println(tmp.toString());

                     }

                2) 使用泛型    

                     Collection<Student>    c1=new ArrayList<Student>();

                      ....

                     Iterator<Student> iterator=c1.iterator();

                      while(iterator.hasNext()){

                            Student tmp=iterator.next();

                            System.out.println(tmp.toString());

                     }

               3) foreach 迭代

                     for(Student tmp:c1) {

                         System.out.println(tmp.toString());

                     } 

                4)  如果是ArrayList类型集合,则也可以使用下标遍历。

           2.Map集合

                使用键值对进行存放,hashMap的键和值都可以为null,且可以打印出来,但键不能重复。Hashtable的键和值都不能为空。方法:put(),get(),

                hashMap是线程不安全的。Hashtable是线程安全的。

              (1).遍历方式有三种:

                1). 用键遍历

                       Set<String> keys=map.keySet();

                       for(String keystr:keys){

                              System.out.println(keystr);

                             //System.out.println((map.get(keystr)).toString);

                       }

                2). 用值遍历                      

                       Set<Student> values=map.value();

                       for(Student value:values){

                              System.out.println(value.toString);

                       }

  

                3). 键值对组合遍历

                   Set<Entry<String,Student>> entrys=map.entrySet();

                    for(Entry<String,Student> entry:entrys){

                           System.out.println(entry.getKey());

                           System.out.println((entry.getValue()).toString);

                    }

                4). 枚举(Hushtable方法,线程安全的)

                     Enumeration<Student> enumeration=map.elements();

                     while(enumeration.hasMoreElements()){

                            System.out.println(enumeration.nextElement);

                     }

           3.Collections:针对集合的一些工具

                在Collections中包含collection和List,Collections里面包含很多的静态方法,其中的排序函数,可以对集合进行排序

                1.sort(List<T> list)方法,使用该方法时,我们必须让list数据的基类型T的类实现compareable<T>接口,该接口属于java.lang包下的,再在该类中重写该接口下的compareTo(T p)方法,该方法返回布尔值,规定排序的方式。用  Collections.sort(list);调用

                2.sort(List<T> list,Comparator<? super T> c):使用该方法时,也可以让list数据的基类型的类实现compareTor<T>比较器,该比较器接口属于java.util包下的,相当于类外部的比较器,再在类中实现该接口下的compare(T a  ,T b)方法,该方法返回的是个整型值,大于0,表示升序,小于0表示降序。调用时用Collections.sort(list,new T());这是动态排序。

             tip:一般情况下需要重写hashcode()和equal()方法。

         4.集合框架包含的三大组件:

              (1). 接口:集合的抽象数据类型。

              (2). 算法:对实现接口的对象执行计算的方法

              (3). 接口的实际实现

         5. 集合框架的优点:

             (1). 提供有用的数据结构和算法,减少编程工作量;

             (2). 提高程序速度和质量,因为它提供了高性能数据结构和算法;

             (3). 可以方便的扩展或改写集合。

            

原创粉丝点击