think in java笔记_《Think in Java》笔记 II

第11章笔记:持有对象

Java实用类库提供了一套相当完整的容器类来解决这个问题,其中基本的类型是List、Set、Queue、Map。这些对象类型也称为集合类,但由于Java的类库中使用了Collection这个名字来指代该类库的一个特殊子集,所以使用了范围更广的术语“容器”称呼它们。容器提供了完善的方法来保存对象,你可以使用这些工具来解决数量惊人的问题。

11.2:基本概念

1)Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照排队规则来确定对象的产生顺序。

2)Map。一组成对的“键值对”对象,允许你使用键来查找值。ArrayList允许你使用数字来查找值,因此,在某种意义上讲,它将数字与对象关联在了一起。映射表允许我们使用另一个对象来查找某一个对象,它也被称为“关联数组”,因为它将某些对象与另外一些对象关联在了一起;或者被称为“字典”,因为你可以使用键对象来查找值对象,就像在字典中使用单词来定义一样。Map是强大的编程工具。

11.4:容器的打印

三种基本风格的Map:HashMap、TreeMap和LinkedHashMap。与HashSet一样,HashMap也提供了最快的查找技术,也没有按照任何明显的顺序来保存其元素。Treemap按照比较结果的升序保存键,同时还保留了HashMap的查找速度。

11.5 :List

List承诺可以将元素维护在特定的序列中。List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。

有两种类型的List:

·基本的ArrayList,它擅长于随机访问元素,但是在List的中间插入和移除元素是比较慢。

·LinkedList,它通过代价较低的在List中间进行的插入和删除操作,提供了优化的顺序访问。LinkedList在随机访问方面相对比较慢,但是它的特性集较ArrayList更大。

11.6:迭代器

迭代器(也是一种设计模式)的概念可以用于达成此目的。迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构。此外,迭代器通常被称为轻量级对象:创建它的代价小。因此,经常看可以见到对迭代器有些奇怪的限制,例如:Java的Iterator只能单向移动,这个Iterator只能用来:

1)使用方法Iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。

2)使用next()获得序列的下一个元素。

3)使用hasNext()检查序列中是否还有元素。

4)使用remove()将迭代器新进返回的元素删除

11.9:Set

Set不保存重复元素,Set中最常用的还是测试归属性,你可以很容易的询问某个对象是否在某个Set中。正因如此,查找就成为了Set中最重要的操作。实际上Set就是Collection,只是行为不同。

第十二章笔记:通过异常处理错误

finally块中使用return/continue/break

实例代码:

public classFlowControlInFinally {public static voidmain(String[] args) {for(int i=0; i<3; i++) {try{throw new RuntimeException("exception " +i);

}finally{if(i == 2) break;continue;

}

}try{throw new RuntimeException("abcd");

}finally{return;

}

}

}

运行该程序,可以发现“没有”抛出任何异常。

只需要在编译时打开-Xlint:finally选项即可发现该问题。

当然,最好的解决办法是不要在finally中使用流程控制(flow-control)语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值