`
dasheng
  • 浏览: 146124 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

<java编程思想>学习笔记11 第11章 持有对象

阅读更多

1,范型和类型安全的容器

 

  @SuppressWarning("unchecked")  类型检查的警告, 被忽略!

 

Collection:一个独立元素的序列,这些元素都服从一个或多个规则。

 

Map:一组成对的“键值对”对象,允许你使用键来查找值。

 

2,容器的打印

 

打印数组,用Arrays.toString()来打印。打容器则不需要,直接system.out.println(collection)即可。

 

ArrayList,LinkedList都是List类型,前者随机访问比较快,后者优势在于顺序访问;

 

HashSet,TreeSet,LinkedHashSet都是set,每个相同的项只保存一份;

 

HashSet速度最快;

 

TreeSet按照升序保存对象;

 

LinkedHashSet按照被添加的顺序保留对象。

 

 

Map使得 你可以用健来查找对象。

 

HashMap:最快的查找技术;

 

TreeMap:按升序保留键;

 

LinkedHashMap:按照插入顺序保留键,还保留了HashMap的查询速度。

 

3,迭代器

 

迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户程序员不必知道或关心该序列底层的结构。通常称为

 

轻量级对象。因为创建他的代价很小:java的迭代器只能单向移动:

 

  1. 使用方法Iterator()要求容器返回一个Iterato;
  2. 使用next()获得序列的下一个元素;
  3. 使用hasNext()检查序列是否还有元素;
  4. 使用Remove()方法返回最近删除的元素;

4,ListIterator

 

ListIterator是一个更加强大的Iterator字类型,它只能用于各种list的访问。它可以双向移动访问。

 

public class ListIteration {
  public static void main(String[] args) {
    List<Pet> pets = Pets.arrayList(8);
    ListIterator<Pet> it = pets.listIterator();
    while(it.hasNext())
      System.out.print(it.next() + ", " + it.nextIndex() +
        ", " + it.previousIndex() + "; ");
    System.out.println();
    // Backwards:
    while(it.hasPrevious())
      System.out.print(it.previous().id() + " ");
    System.out.println();
    System.out.println(pets); 
    it = pets.listIterator(3);
    while(it.hasNext()) {
      it.next();
      it.set(Pets.randomPet());
    }
    System.out.println(pets);
  }
} /* Output:

 

 

5,各种队列和栈的行为,由LinkedList提供支持。

 

public class Stack<T> {
  private LinkedList<T> storage = new LinkedList<T>();
  public void push(T v) { storage.addFirst(v); }
  public T peek() { return storage.getFirst(); }
  public T pop() { return storage.removeFirst(); }
  public boolean empty() { return storage.isEmpty(); }
  public String toString() { return storage.toString(); }
} ///:~

6,新程序中不应该使用过期的Vector,Hashtable和Stack

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics