移动平台开发第四周学习总结
第十二章 枚举
枚举(enum)用于表示一个类的对象是有限且固定的情况。与静态常量相比,枚举类型更加安全。使用枚举类型就能保证只传入枚举类中包含的对象。
定义的一个enum,是java.lang.Enum类的直接子类。enum不同于其他普通的类有:
它们没有共有的构造函数,这使得不可能将其实例化
它们隐式地是静态的
每个enum常量只有一个实例
可以在一个enum上调用values方法,以遍历其枚举值,返回一个对象的数组。
可以在values所返回的对象上调用name和ordinal方法,以分别获取该实例的名称和排序值
enum上的switch:switch语句也可以作用于一个enum的枚举值之上。
枚举成员:由于enum是一个类,一个enum可以有构造方法和方法。
第十三章 操作时间
lnstant类:instant对象表示时;间线上的一个时间点。
LocalDate类建模没用时间部分的日期。
period:period类表示基于日期的一个时间量。
LocalDateTime:LocalDateTime类表示一个没用时区的日期时间。
ZonedDateTime类表示带有时区的日期时间。
Duration:Duration类表示基于时间的时间段。它类似于period,只不过Duration的时间部分精确到纳秒,并且考虑到了ZonedDateTimes之间的时区。
格式化日期时间:使用一个java.time.format.DateTimeFormatter可以格式化一个本地日期时间或带时区的日期时间。
解析一个日期时间:在java日期和时间API的中断类中,有两个parse方法。第一个parse方法需要一个格式,第二个则不需要。
使用旧的日期和时间API:旧的API主要以Date和Clalendar类为中心。
第十四章 集合框架
和C++中的集合框架类似,Java带有一组接口和类,使得操作成组的对象更为容易,这些接口和类称为集合框架。
集合也叫作容器,提供了一种方法来存储、访问和操作其元素,在Java中,元素皆为类的对象。
集合框架中的常见类型:
集合框架的大多数接口都带有实现类,一个实现类有两个版本,同步的版本和非同步的版本。
LIst和ArrayList
List是Collection最为常用的接口,相当于数组,ArrayList是最为常用的List的实现类。具有add、set、remove等方法。有两个构造方法,无参数和有参数的构造方法。并且允许存储重复的元素。
java.util.Arrays类中有asList方法;LIst接口还有用于搜索集合元素的indexOf和lastIndexOf方法。
java.util.Collections类也是一个辅助工具类,用于提供操作List和其他Collection实现的对象的方法,例如sort方法。
Iterator和for
Collection接口中有一个iterator方法,当Collection中的对象(例如ArrayList类的实例)调用这个方法时,会返回Iterator接口的对象,这个对象能够对Collection中对像进行遍历操作,相关方法有hasNext、next、remove。
上个截图中的遍历使用的是一个增强的for循环,编译器将其翻译为:
for (Iterator iterator = myList.iterator( ); iterator.hasNext( ); ) {
String element = (String) iterator.next( );
System.out.println(element);
}
Set和HashSet
Set相当于数学中的集合,但不允许存在重复的内容,最流行的实现是HashSet,但不保证元素的顺序保持不变。
Queue和LinkedList
Queue相当于一个队列接口,遵循先进先出原则,LinkedList是实现Queue的一个类。
添加方法:offer和add; 弹出方法:Remove和Poll;取头部值方法:Element和Peek。
集合间的类型转换。
Map和HashMap
Map为映射关系,键\值对,HashMap为Map的一个实现类。相关方法:put、putAll、remove、get、keySet、values、entrySet.
遇到的问题?未解决。。。
使用entrySet方法,返回包含的Map.Entry对象的一个Set,但该Set中的元素不能使用Map.Entry接口中的getKey()和getValue()方法。
使用getClass()方法,发现元素属于 java.util.HashMap$Node类,不知该类是否实现了Map.Entry接口。
对象的比较和排序
Arrays.sort和Collections.sort方法都定义了他们自身和需要排序的对象之间的一个协议,这个协议的形式是java.lang.Comparable接口。
接口中的compareto(obj)方法是用来设置对象之间进行比较的规则,参数obj引用了需要和该对象进行比较的对象。
sort方法会将实现了的Elephant对象当作一个Comparable对象,并在该对象中重复调用compareto来进行排序。
使用Compatator接口,实现compare方法。###课本上的代码没标注@Override重载标签。