《Java编程思想》笔记

第十章

(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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值