• [JAVA]《Java 核心技术》(三)泛型、集合


    1. Logger
    层次
     
    和配置
     
     
    2. 泛型
     
    意味着编写的代码可以被很多不同类型的对象所重用。
     
    3 .extends 
     
    eg: T extends Comparable
     
    T extends A & B
     
    4. 虚拟机没有泛型,擦除。
     
    5. 通配符
    ?
    ? extends A
     
    6. super
     
    ===============
    7.集合
     
    8. 迭代器接口
    获得下个元素。 next()
    判断是否有下一个元素 hasNext()
    Collection<String> c =..
    Interator<String> iter = c.iterator()
    while(iter.hasNext()){
         String ele = iter.next();
    }
     
    //删除 iter.remove()
     
    迭代器是占位置的,是两个元素之间的纽带,虽然删除了某个元素,但这个迭代器纽带仍然维持的。所以不能2次连续调用remove
    iter.remove()
    iter.remove()
     
    或用for
    for (String element : c){
    }
     
    9 链表
    List<String> staff = new LinkedList<String>();
    staff.add("Amy")
    staff.add("Bob")
     
    Iterator iter = staff.iterator()
    String first = iter.next()
     
    String second = iter.next()
    iter.remove()
     
    listIterator可以反向遍历。
     
    10.ArrayList
    动态再分配
     
    11.散列集
    eauals,hashCode要对应
    不关心顺序的时候,用hashSet
     
    12. TreeSet
    SortedSet<String> sorter = new TreeSet<String>();
    将一个元素添加到树种要比添加到散列中蛮。与将元素添加到数组或链表的正确位置上还是要快很多的。
    树中 n 个元素,log 2N次
    TreeSet比HashSet慢,但可以自动地对元素进行排序。
     
    13.队列与双端队列
    Queue
    Deque
     
    14 优先级队列
    PriorityQueue
     
    15 映射表
    Map,HashMap,TreeMap,SortedMap
    keySet()
    for(Map.Entry<String, Employee> entry: staff.entrySet()){
         String key = entry.getKey();
         Employee value = entry.getValue();
    }
     
    put方法覆盖
    containsKey
    containsValue
    values()
     
    16 弱散列映射表
    WeakHashMap
    比如有些键已经不再使用,但由于整个散列表是活动的,所以垃圾回收期不回收他们。
    周期性检查若引用
     
    LinkedHashSet
    LinkedHashMap
     
    EnumSet
    EnumSet<Weekday> all = EnumSet.allOf(Week.class)
    EnumMap
    EnumMap<Weekday,Employee> persionInCharge = new EnumMap<Weekday, Employee> (Weekday.class);
     
    IdendifyHashMap
    标识散列映射表
    键的散列值不是用hashCode来计算的,是用System.identityHashCode方法计算的
    根据内存地址来计算,即用的 == ,而不是equals
    在实现对象遍历算法(对象序列化)时,这个类非常有用,可以用来跟踪每个对象的遍历状况。
     
    17. 框架
    集合有两个基本的接口
    Collection和Map
     
    Iterable
    Collection
    List, Set, Queue
          SortedSet ,Deque
     
    Map
    SortedMap
     
    Iterator
    ListIterator
    RandomAccess接口
     
    AbstractXX
     
    集合框架中的遗留类
     
    List
    AbstractList
    Vector -->RandomAccess
    Stack
     
    Map
    Hashtable
    Properties
     
    18 视图与包装器
    1.轻量级包装器
    Arrays.asList()方法
    注意:返回的不是一个ArrayList,是一个视图对象,带有访问底层数组的get/set方法
    改变数组大小的所有方法都会抛异常。
     
    subList()
     
    clear()
     
    视图机制有助于确保常规集合的线程安全
     
    Collections.checkedList()
     
    19批操作
    求集合交集 retainAll
    removeAll
     
    20 集合与数组之间的转换
     
    数组 --> 集合 asList
     
    集合 --> 数组 toArray(). 注意 类型是 Object []
     
    或者 String []values = staff.toArray(new String[staf.size()])
    但不能 String []values = (Object []) staff.toArray();这样编译不错误,但运行会抛异常的。
     
    21.算法
    max
    sort排序
    Collections类的sort方法可以实现了List接口的结合进行排序
    可以指定排序方法的
    Comparator<Item> iterComp = new Comparator<Item>(
    {
         public int compare(Item a, Item b){
              return a.partNumber - b.partNumber;
         }
    }
    )
    Collections.sort(items,iterComp);
     
    Collections.sort(staff,Collections.reverseOrder());
     
    Collections.shuffle()
    打乱顺序
     
    22. 二分查找
    Collections.binarySearch()
     
    23. BitSet
  • 相关阅读:
    面试题
    学习Javascript闭包(Closure)
    git命令
    css3 3d翻转效果
    meta 如何写
    Java String equals和==的比较
    MySQL Explain详解
    MySQL explain,type分析(转)
    python的内存分析和处理
    python lambda的使用
  • 原文地址:https://www.cnblogs.com/akingseu/p/3452359.html
Copyright © 2020-2023  润新知