更新中…
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表达式的重要特征:
可选类型声明:
可选的参数圆括号:
可选的大括号:
可选的返回关键字: