[TOC]
java程序員成功面試秘籍
標(biāo)簽(空格分隔): java
第四章編寫核心算法

Comparable和Comparator接口的區(qū)別
測試:
@Test
public void sortInts() {
final int[] numbers = {-3, -5, 1, 7, 4, -2};
final int[] expected = {-5, -3, -2, 1, 4, 7};
Arrays.sort(numbers); //升序排列
assertArrayEquals(expected, numbers);
Collections.sort(numbers, new ReverseNumericalOrder());//降序排列
assertEquals(expected, numbers);
}
ReverseNumericalOrder.java 降序排列
import java.util.Comparator;
public class ReverseNumericalOrder implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
// equals omitted
}
關(guān)于compare(Object o1,Object o2)

Comparator的compare
幾種排序
- 冒泡排序
- 插入排序
- 快速排序
- 歸并排序
快速排序.java實現(xiàn)方法。寫法很java
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static junit.framework.Assert.assertEquals;
public class Quicksort {
public static List<Integer> quicksort(List<Integer> numbers) {
if (numbers.size() < 2) {
return numbers;
}
final Integer pivot = numbers.get(0);
final List<Integer> lower = new ArrayList<>();
final List<Integer> higher = new ArrayList<>();
for (int i = 1; i < numbers.size(); i++) {
if (numbers.get(i) < pivot) {
lower.add(numbers.get(i));
} else {
higher.add(numbers.get(i));
}
}
final List<Integer> sorted = quicksort(lower);
sorted.add(pivot);
sorted.addAll(quicksort(higher));
return sorted;
}
第五章 數(shù)據(jù)結(jié)構(gòu)
ArrayList List的數(shù)組實現(xiàn)(數(shù)組的特性)
LinkedList List的雙向鏈表實現(xiàn)(雙向鏈表的特性)

JVM System.arraycopy
隊列

隊列
散列
HashMap :鍵的存儲位置是由對象的hashCode決定的
TreeMap: TreeMap鍵的順序不變(二叉樹)
LinkedHashMap工作方式和HashMap一樣,鏈表實現(xiàn),見得遍歷插入順序相同
ConcurrentHashMap:線程安全,多線程共享數(shù)據(jù)使用

散列

幾種Map的比較
Set
HashSet -->HashMap :鍵的存儲位置是由對象的hashCode決定的
TreeSet --> TreeMap: TreeMap鍵的順序不變(二叉樹)
LinkedHashSet --> LinkedHashMap工作方式和HashMap一樣,鏈表實現(xiàn),見得遍歷插入順序相同

幾種Set