第十章
(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