Java编程思想学习笔记(十) 第11章 持有对象

泛型

1.ArrayList<Apple> apples = new ArrayList();通过使用类型参数(可以由多个,泛型),可以在编译期防止将错误类型的对象放入容器。 编译器错误 or 运行期错误

Collection

  1. Collection: List, Set, Queue, Map;都是Interface。
  2. List: ArrayList 和 LinkedList。LinkedList相比于ArrayList优点是在列表中间的插入和删除都相对低廉,但随即访问方面效率更差。
  3. Iterator(迭代器):遍历并选择序列中的对象 Interface;提供三个方法:hasNext(),next(),remove()。Java的Iterator只能单向移动;使用iterator()方法要求容器返回一个Iterator,Iterator将准备好返回序列的第一个元素;next()方法获得序列中的下一个元素;hasNext()方法检查序列中是否还有元素;remove()将迭代器新近返回的元素删除,在调用remove()方法前先调用next()方法。
  4. ListIterator可以双向移动,listIterator(n)可以产生一个一开始指向列表索引为n的元素处的ListIterator。
  5. LinkedList:LinkedList还添加了可以使其用作栈、队列或双端队列的方法。
  6. Stack:栈,后进先出。LinkedList具有能够直接实现栈的所有功能的方法;
  7. Set:不保存重复的元素的特性使查找就成了Set最重要的操作,因此通常会选择实现一个HashSet。HashSet无顺序,LinkedHashSet使用链表来维护元素的插入顺序;TreeSet使用红黑树数据结构存储元素。
  8. 检查Java的Random类的随机性代码:
//: com/wo142857/hoding/Statistics.java
// Simple demonstration of Random.
import java.util.*;

public class Statistics {
    public static void main(String[] args) {
        Random rand = new Random(47);
        Map<Integer, Integer> m = new HashMap<Integer, Integer>();

        for(int i = 0; i < 10000; i++) {
            // Produce a number between 0 and 20;
            int r = rand.nextInt(20);
            Integer freq = m.get(r);
            m.put(r, freq == null ? 1 : freq + 1);
        }
        System.out.println(m);
    }
}

9.containsKey() 和 containsValue() 方法,查看一个Map是否包含某个键或某个值。keySet() 和 values() 返回Map中所有key组成的Set,或所有Value的Collection。
10.两种特殊方法

public static Map<Person, List<? extends Pet>> PetPeople = new HashMap<Person, List<? extends Pet>>();
static {
    PetPeople.put(new People("Liu"), ArrayList.asList(new Dog("Moer"), new Cat("Jingle")));
}

11.数组一旦生成,其容量就不能改变。像数组一样,List也建立数字索引与对象的关联,因此数组和List都是排好序的容器。但是List能自动扩容。
12.HashMap设计用来快速访问;而TreeMap保持“键”始终处于排序状态,所以没有HashMap快;LinkedHashMap保持元素插入的顺序,但是也通过散列提供了快速访问能力。
13.Set不接受重复元素。HashSet提供最快的查询速度;TreeSet保持元素处于排序状态;LinkedHashSet以插入顺序保存元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值