java程序员成功面试秘籍
2017-03-13 本文已影响0人
百炼
[TOC]
java程序员成功面试秘籍
标签(空格分隔): java
第四章编写核心算法
Comparable和Comparator接口的区别测试:
@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
}
关于compare(Object o1,Object o2)
Comparator的compare几种排序
- 冒泡排序
- 插入排序
- 快速排序
- 归并排序
快速排序.java实现方法。写法很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;
}
第五章 数据结构
JVM System.arraycopyArrayList List的数组实现(数组的特性)
LinkedList List的双向链表实现(双向链表的特性)
队列队列
散列散列
HashMap :键的存储位置是由对象的hashCode决定的
TreeMap: TreeMap键的顺序不变(二叉树)
LinkedHashMap工作方式和HashMap一样,链表实现,见得遍历插入顺序相同
ConcurrentHashMap:线程安全,多线程共享数据使用
几种Map的比较
几种SetSet
HashSet -->HashMap :键的存储位置是由对象的hashCode决定的
TreeSet --> TreeMap: TreeMap键的顺序不变(二叉树)
LinkedHashSet --> LinkedHashMap工作方式和HashMap一样,链表实现,见得遍历插入顺序相同