第十章
(1)当生成一个内部类的对象时。此对象 与制造他的外围对象之间就有了一种联系,所以它能訪问其外围对象的全部成员,而不须要不论什么特殊条件。
此外,内部类还拥有其它外围类的全部元素的訪问权。
(2).this 假设你须要生成对外部类对象的应用。能够使用外部类的名字后面紧跟原点和this。
.new 假设想要创建某个内部类的对象,你必须外部类的一个实例后加上.new
如:DotNew dn = new DotNew();
DotNew.Inner dni = dn.new Inner;
(3)记住。
接口的全部成员自己主动被设置为public();
(4)假设定义一个匿名内部类或者局部内部类。而且希望它使用一个在其外部定义的对象,那么编译器会要求參数引用是final的。
第十一章
(1)collection衍生3中容器。list,set。queue。List,它以特定的顺序保存一组数据;set,元素不能反复。queue,仅仅同意在容器的一端插入对象,并从还有一端移除对象。
Map在每一个槽内保存了两个对象。即检和与子相关联的值。
(2)HashList、HashMap是最快获取元素的方式
TreeList、TreeMap存储顺序依照字母升序
LinkedHashSet、LinkedHashMap存储依照被加入的顺序
(3)迭代器Iterator有next(),hasnext(),remove()三种方法
子类ListIterator更加强大,有next().hasnext(),nextIndex().previous(),hasprevious(),previoueIndex()方法,
另外,listIterator能够使用set()方法替换当前节点,能够通过调用listIterator(n)产生一个一開始就指向n号元素的ListIterator。
ListIterator实现倒叙:
import java.util.*; import xpf.test; public class ListIteration { public static void main(String args[]){ List<Integer> s =new ArrayList<Integer>(8); Collections.addAll(s,0,1,2,3,4,5,6,7); ListIterator<Integer> it = s.listIterator(); it=s.listIterator(s.size()-1); while(it.hasPrevious()){ System.out.println(" "+it.previous()); } System.out.println(); } }
题目:使用String“键”和你选择的对象填充LinkedHashMap。然后从中提取键值对,键值排序,然后又一次插入此Map
import java.util.*; import static org.greggordon.tools.Print.*; public class Ex24{ public static void main(String[] args) { Map<String,Integer> m = new LinkedHashMap<String,Integer>(); m.put("ten", 10); m.put("nine", 9); m.put("eight", 8); m.put("seven", 7); m.put("six", 6); m.put("five", 5); m.put("four", 4); m.put("three", 3); m.put("two", 2); m.put("one", 1); m.put("zero", 0); println("Map to sort: " + m); // temporary map to hold entrys: Map<String,Integer> mTemp = new LinkedHashMap<String,Integer>(); // use TreeSet to sort the keySet(): Set<String> ss = new TreeSet<String>(m.keySet()); // mover sorted keys to temp map: Iterator<String> itss = ss.iterator(); while(itss.hasNext()) { String s = (String)itss.next(); Integer i = m.get(s); m.remove(s); mTemp.put(s, i); } // get sorted list of temp keys: Set<String> ssTemp = new TreeSet<String>(mTemp.keySet()); // move sorted entrys back to map: Iterator<String> itssTemp = ssTemp.iterator(); while(itssTemp.hasNext()) { String s = (String)itssTemp.next(); Integer i = mTemp.get(s); mTemp.remove(s); m.put(s, i); } // done with temp: mTemp.clear(); println("Sorted map: " + m); } }
(4)priorityQueue
仅仅保证队列首个元素是最重要的,内部其它元素不保证依照重要度排序。
事实上它是在维护一个最大堆。
具体可參考http://blog.csdn.net/chengyingzhilian/article/details/8078032