【学习笔记】《Java编程思想》 第8~11章,
【学习笔记】《Java编程思想》 第8~11章,
第八章 多态
第九章 接口
第十章 内部类
public interface Contents { int value(); } public class Parcel7 { public Contents contents() { return new Contents() { private int i = 1; public int value() { return i; } }; } //等价于 /* class MyContents implements Contents { private int i = 1; public int value() { return i; } } public Contents contents() { return new MyContents(); } */ public static void main(String[] args) { Parcel7 parcel7 = new Parcel7(); Contents c = parcel7.contents(); } }
给匿名内部类传递参数时,若该形参在内部类被使用,那么该形参必须被声明为final
public class Parcel9 { //dest是一个在外部定义的对象,必须将其定义为final参数引用 public Destination destination(final String dest) { return new Destination() { private String label = dest; @Override public String readLabel() { return label; } }; } public static void main(String[] args) { Parcel9 parcel9 = new Parcel9(); Destination destination = parcel9.destination("Shanghai"); System.out.println(destination.readLabel()); } }
每个类都会产生一个.class文件,其中包含了如何创建该类型的对象的全部信息;内部类也必须生成有个.class文件以包含它们的class对象信息,其命名规则是:
外围类的名字,加上”$“,再加上内部类的名字,如果时匿名内部类,编译器会简单地产生一个数字作为其标识符,例如:
Outer$Inner.class Outer$1.class
第十一章 持有对象
LinkedList常见方法
addFirst(E e)/addLast(E e):将元素添加到列表的开头/结尾
getFirst()/element():返回列表的第一个元素
peek()/peekFirst():获取但不移除列表的第一个元素
offer(E e)/offerLast(E e):将元素插入到列表末尾
Queue
队列时一个典型的先进先出(FIFO)的容器,即从容器的一端放入事物,从另一端取出,并且事物放入容器的顺序与取出的顺序是一样的
LinkedList提供了方法以支持队列的行为,并且它实现了Queue接口,因此LinkedList可以用作Queue的一种实现,也可以将LinkedList向上转型为Queue
Set
Set不保存重复的元素;Set最常被使用的是测试归属性,我们可以很容易地询问某个对象是否在某个Set中
存储元素的方式:
HashSet:使用散列函数
LinkedHashSet:使用散列,但是看起来使用了链表来维护元素的插入顺序
TreeSet:将元素存储在红-黑树结构中
Map:一组成对的“键值对”对象,允许使用键来查找值;映射表允许我们使用另一个对象来查找某个对象,它被称为“关联数组”,因为它将某些对象与另外一些对象关联在了一起,或者被称为“字典”
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
更复杂的形式
Map<Integer, List<String>> map =
new HashMap<Integer, List<String>>();
map.put(1, rrays.asList("lv", "long", "bao"));
map的键是一个Set,值是一个Collection
Map常见方法
get(Object o):返回指定键所映射的值,如果不包含该键的映射关系,返回null
put(K key, V value):将指定的值与此映射中的指定键关联,如果已经存在映射关系,更新值
hashCode():返回此映射的哈希码值
Map的三种实现
HashMap:基于“拉链法”实现的散列表,一般用于单线程中,不是线程安全的
HashTable:基于“拉链法”实现的散列表,一般用于多线程中,是线程安全的
TreeMap:有序的散列表,通过红黑树实现的,一般用于单线程中存储有序的映射

相关文章
- 暂无相关文章
用户点评