JAVA API-day03

2018-03-29  本文已影响0人  Junglerengar

A

日期操作

java中的时间使用标准库的Date表示,使用距离一个固定的点毫秒数表达一个特定的时间点。固定的时间点称为纪元(1970-1-1 00:00:00);
java.util.Date 类封装的日期及时间信息;
Date d=new Date();表示当前系统时间。
SimpleDateFormat:日期格式类:日期类和字符串格式之间转化
  format():将日期类型(Date)数据格式化为字符串(String)。Date-->String
  parse();将字符串类型(java.lang.String)解析为日期类型(java.util.Date)。String-->Date
日期模式匹配字符
字符       含义                      示例
y          年            yyyy年(2013年);yy年(13年)
M          月                MM月(02月);M月(2月)
d          日                  dd日(06日);d日(6日)
E          星期                  E--星期日(sun)
H          小时(24小时制)
h          小时(12小时制)
m          分钟                    m:1分钟;mm:01分钟
s          秒                      ss:02秒;s:2秒
a          am或者pm表示

Calendar类

java.Util.Calendar类用于封装日历信息,起主要作用在于其他方法对于时间分量可以运算。Calendar类是一个抽象类。获取Calendar类对象如下:
Calendar c=Clendar.getInstance():当前系统时间
月份 :             一月      二月      三月.....
Calendar.MONTH:     0        1          2.....
星期:                        星期天       星期一     星期二       星期三 ...
Calendar.DAY_OF_WEEK:          1          2          3            4 
通过Calendar设置日期:
Calendar c=Calendar.getInstance();
c.set.(Calendar.YEAR,2008);
c.set(Calendar.MONTH,Calendar.AUGUST);
C.set(Calendar.DATE,8);
getActualMaximum()获取给定日历字段的可能最大值
通过Calendar类获取时间分量:
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DATE);
int week=c.get(Calendar.DAY_OF_WEEK)-1;
设置星期:
--如果当前日期是周日,那么设置的星期1-6日期往后推;
--如果当前日期不是周日,那么设置的星期小于当前的日期往前推,大于当前日期的往后推;如果是当前日期的不变。
c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
(所取日期为当前日期的所在的同一个星期)
增加或减少时间分量
c.add(Calendar.YEAR,-1);//时间往前减少一年
c.add(Calendar.MONTH,1);//时间往后加一个月
c.add(Calendar.DATE,3);//时间往后加3天

复合框架

Collection(集合):有两个子接口:List和set;List可重复集,set:不可重复集;
元素是否重复,取决于元素的eqauls方法比较的结果;
Collection list=new Array.List();
boolean add(E e):用于添加元素;
集合中储存的都是引用类型的元素,并且集合只保存每个对象的引用,而并非将元素对象存入集合中。
boolean contains(Object o);该方法用于判定元素是否包含在该集合中,若包含返回true,反之返回false
[元素是否包含在集合中以equals比较结果决定。]
size();用于返回当前集合中的元素总数
clear();清空集合中的元素
isEmpty():该方法用于判断当前集合是否为空;如果为空则返回true,反之返回flase
remove();删除集合中的元素
get():获取集合中的元素[List方法才能使用]
boolean addAll(Collection c);把传入的集合元素添加到当前集合。
    --List:有序可重复的;ArrayList()
    --Set:无序不可重复的;HashSet()
重复性:是由集合中元素equals方法决定。
迭代器:Itertor:迭代器用于遍历集合元素,如果想通过迭代器遍历元素,首先要把集合转化为迭代对象:Iterator  iterator();
Iterator有两个常用方法:
--boolean hasNext();判断集合中是否还有元素可遍历;
--next():返回迭代对象;
Iterator的remove()方法:从集合中删除next()获得的元素。在使用迭代器遍历集合时,不能通过集合的remove()方法删除否则会抛出异常。但是可
以通过迭代器自身提供的remove()方法删除next()迭代出的元素
  注意:1、迭代器的删除方法是在原集合中删除元素
       2、在调用remove()方法前必须通过next()方法迭代过元素,那么删除的就是这个元素。并且不能再次调用remove()方法,除非再next()
          后方可以调用
增强型for循环:for(元素类型 变量:集合(数组)){}增强型for循环并非新的语法,而是在编译过程中,编译器会将该训话转换为迭代器模式,所以该
循环本质上是迭代器
如:
Set<String> s=new HashSet<String>();
for(String str:s){
     System.out.println(str);
}
泛型机制:java泛型机制广泛的应用到集合框架中,所有的集合类型都带有泛型参数,这样在创建集合是可以指定放入集合中元素的类型。java编译器可以根
据此类型检查,这样可以减少代码在运行时出现错误的可能性
集合操作---线性表
  List接口是Collection接口的子接口,用于定义线性表数据结构;可以将List理解为存放对象的数组,只不过元素个数可以动态的增加和减少
  1)List接口有两个常见的实现类:ArrayList(动态数组)和LinkedList(链表)。两种实现类的方法逻辑上完全一样,但性能是有一些差别的;
 ArrayList更适合随机访问;LinedList更适合添加和删除,但是在性能要求不是很苛刻的情况下,是可以忽略这个差别的。
  2)较Collection接口List所独有的方法:
      --E get(int index):获取集合中指定下标对应的元素,下标是从零开始。
      --E add(int index,E elment):将给定元素插入到指定位置,原来位置及后续元素都顺序向后移动。
      --E set(int index,E elment):(替换功能)将给定的元素存入指定位置,并将原位置的元素返回。
      --E remove(int index):删除给定位置的元素,并把被删除的元素返回。
      --List subList(int begin,int end):用于获取List集合的子集合
      注:由于集合中存放的是对像的地址,subList()获取的是集合中对象的地址; 所以当对子集合或者原集合的修改都会影响到子集合和原集合彼此。
List转换为数组:Collection接口有一个方法:toArray();作用:把集合转化为数组
如:Object[] arr=list.toArray();
String[] arr1=l.toArray(new String[]{});
数组转换为集合:static asList():Arrays类的静态方法:把数组转换为集合
如:list=Arrays.asList(arr);
集合转换为数组时(toArray()):对转换后的数组做增删改的时候,不会抛出异常;
数组转换为集合时(asList()):对转换后的集合做增删操作的时候会抛出异常;而做修改的时候不会抛出异常,但会对元数组产生影响。

List排序

对集合中的元素排序可以用工具类Collections.sort()方法,进行排序;那么两个元素对象之间就一定要有大小之分,如何界定的?使用Collections的
sort排序的集合元素必须是实现了Comparable接口的实现类。该接口表示其子类是可以比较,因为实现该接口需要重写一个方法:
  ---int compareTo(T t);该方法用于使用当前与给定对象比较。
    --如果当前对象大于给定对象,那么返回值应为>0的整数;
    --如果当前对象小于给定对象,那么返回值应为<0的整数;
    --如果当前对象等于给定对象,那么返回值应为=0的整数;
一旦java实现了Comparable接口,其逻辑就已经确定,如果希望在排序的操作中临时改变规则,可以采用Comparator接口实现。Comparator接
口也有一个需要重新定义的方法:
  int compare(T t1,T t2)该方法用于使两个给定对象比较。
    --如果t1对象大于t2对象,那么返回值应为>0的整数;
    --如果t1对象小于t2对象,那么返回值应为<0的整数;
    --如果t1对象等于t2对象,那么返回值应为=0的整数;

队列和栈:

  Queue:是一种数据结构,可以将队列看成一个特殊的线性表,队列限制了对线性表的一些访问方式;
队列遵循先进先出的原则:想队列中添加元素用方法:boolean offer(E e);
  从队列的另一端取元素方法:E poll():从队首删除并返回一个元素;E peek():返回队首的元素但并不删除。
   ---Queue的实现类是LinkedList;
          Queue<String> q=new LinkedList<String>();
--Deque:是队列的子接口,称为双端队列;如果将Deque限制只能从一端入队和出队,则就实现了栈的数据结构,对于栈而言:入栈称之
为push,出栈称为pop;实现类是LinkedList。
  1)push():向栈中添加元素;
  2)pop();获取栈中的元素。
上一篇 下一篇

猜你喜欢

热点阅读