JDK源码阅读笔记

更新中…
win10安装jdk默认路径遇到的问题

解决win10中的jdk默认安装路径中带有空格的问题(Program File ——> PROGRA~1)

java.util.Collections:

  Collections.private static class CheckedMap<K, V>
    final Class<K> keyType;
    private void typeCheck(Object key, Object value) {
      if (key != null && !keyType.isInstance(key)) {
        throw new ClassCastException();
      }
    }

  public V computeIfAbsent(K key, Funciton<? super K, ? extends V> mappingFunction) {  }
  public static <T extends Comparable<? super T>> void sort(List<T> list) {list.sort(null);}
  public static <T> void sort(List<T> list, Comparator<? super T> c) {list.sort(c);}
  public static void reverse(List<?> list) {}
  public static <T> void copy(List<? super T> dest, List<? extends T> src)

list.get(i) 与 iterator.next()之间有什么性能区别?
  if size < REPLACEALL_THRESHOLD || list instanceof RandomAccess: for (int i = 0; i<size; i++) list.get(i)
  else: ListIterator<T> itr = list.listIterator(); for (int i = 0; i<size; i++) itr.next() 

  在已知是ArrayList,从性能角度考虑,两种方法差不多;
  从设计模式的角度,推荐使用iterator,因为程序很可能是面向List接口,所以程序并不关心你访问的是ArrayList还是LinkedList。通过for循环的方式进行访问LinkedList的复杂度可能为O(n^2),ArrayList的复杂度可能为O(n),而通过iterator方式则复杂度都是O(n)

java.util.Collection

 ...通用接口,包含集合类的常用的方法接口

java.util.ArrayList 在集合中进行元素的操作,分为null情况进行操作和不是null的情况进行操作

 public List<E> sublist(int fromIndex, int toIndex);
  public int size();
  public boolean isEmpty();
  public boolean contains();
  public int indexOf();
  public int lastIndexOf();
  public Object[] toArray();
  public boolean addAll(Collection<? extends E> c);
  private class Itr implements Iterator<E> {
    public boolean hasNext();
    public E next();
    ...
  }
  private class ListItr extends Itr implements ListIterator<E> {
    public boolean hasPrevious();
    public int nextIndex();
    public int previousIndex();
    public E previous();
  }

  ArrayList集合动态增加数组长度: 先按照原数组长度的1.5倍进行扩容,然后与需要的数组长度进行比较,如果小的话,就按照需要进行扩容,否则默认为原数组1.5倍
  private void grow(int minCapacity) {
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    if (newCapacity - minCapacity < 0) 
      newCapacity = minCapacity;
    if (newCapacity - MAX_ARRAY_SIZE > 0) 
      newCapacity = hugeCapacity(minCapacity);
    elementData = Arrays.copyOf(elementData)
  }

java.util.Arrays

 public static void sort(各种参数形式:重载); 引用java.util.DualPivotQuicksort中的各种快排或其他排序的优化算法。
  public static boolean equals(long[] a, long[] a2) {
    if (a == a2) 
      return true;
    if (a == null || a2 == null) 
      return false;
    int length = a.length;
    if(length != a2.length) 
      return false;

    for (int i=0; i<length; i++) {
      if (a[i] != a2[i]) 
        return false;
    }
    return true;
  }

lambda表达式的重要特征:

  可选类型声明:
  可选的参数圆括号:
  可选的大括号:
  可选的返回关键字:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值