总结:本小节介绍了泛型、自动装箱、迭代、Bag、Queue、Stack以及一个栈用例的经典例子--算术表达式求值。
重点:
1. 集合类的抽象数据类型的一个关键特性是我们应该可以用它们储存任意类型的数据。一种特别的Java机制能够做到这一点,它被称为泛型,也叫作参数化类型。
2. 在处理赋值语句、方法的参数和算术或逻辑表达式时,Java会自动在引用类型(Character, Integer...)和对应的原始数据类型(char, int...)之间进行和转换。
自动装箱:int -> Integer
自动拆箱:Integer -> int
3. 如果集合是可迭代的,用例用一行语句即可打印出交易的列表:
for (Transaction t : collection) { StdOut.println(t); }
这种语法叫做foreach语句:可以将for语句看作对于集合中的每个交易t(foreach),执行以下代码段。
很难想象还有比这更加清晰和简洁的代码。
4. 背包是一种不支持从中删除元素的集合数据类型--它的目的就是帮助用例收集元素并迭代遍历所有收集到的元素(用例也可以检查背包是否为空或者获取背包中元素的数量)。
使用Bag可以说明元素的处理顺序不重要。
5. 在应用中使用栈迭代器的一个经典原因是在用集合保存元素的同时颠倒它们的相对顺序。
6. Dijkstra的双栈算术表达式求值算法
牛!
时间: 2024-11-08 19:17:39