Java 基础知识(一)
重新刷一遍Leetcode,回忆Java基础知识
1)Java中的map有HashMap和TreeMap两种,HashMap通过内部哈希值的映射关系完成查找,而TreeMap的映射关系存在一定的顺序,假如希望容器里的元素是有序的,那么应该选用TreeMap,否则选用HashMap,因为HashMap的效率会更高。
2)Java排序
对数组排序,可以使用Arrays.sort(),排序的参数可以由 Collection指定
import java.util.Arrays; import java.util.Comparator; int[] intArray = new int[] {4, 1, 3, -23}; Arrays.sort(intArray); String[] strArray = new String[] {"z", "a", "c"}; Arrays.sort(strArray); Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER); Arrays.sort(strArray, Collections.reverseOrder()); Collections.reverse(Arrays.asList(strArray));
通过实现Comparator接口对自定义对象排序
import java.util.Comparator; public class TwoSum_1 { private String name; private int weight; public TwoSum_1(String name, int weight) { this.name = name; this.weight = weight; } public int getWeight() { return weight; } class sortByWeight implements Comparator { @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method stub int lhs = ((TwoSum_1)(o1)).getWeight(); int rhs = ((TwoSum_1)(o2)).getWeight(); if(lhs > rhs) { return 1; } else if(lhs < rhs){ return -1; } return 0; } } }
3) HashMap的用法
a. 初始化 HashMap<Integer, Integer> mp = new HashMap<Integer, Integer>();
b. 添加元素 mp.put(1,2);
c. 查询元素 mp.get(1); // 1是key
d. 遍历
一个例子:
import java.util.*; import java.util.Map.Entry; public class TwoSum_1 { public int[] twoSum(int[] numbers, int target) { Map<Integer, Integer> record = new HashMap<Integer, Integer>(); for(int i = 0; i < numbers.length; i ++) { record.put(numbers[i], i+1); } int index1 = 0, index2 = 0; Iterator<Entry<Integer, Integer>> iter = record.entrySet().iterator(); Entry<Integer, Integer> entry; int key; while(iter.hasNext()) { entry = iter.next(); key = entry.getKey(); if(record.containsKey(target-key)) { index1 = entry.getValue(); index2 = record.get(target-key); break; } } if(index1 > index2) { int temp = index1; index1 = index2; index2 = temp; } int[] res = new int[2]; res[0] = index1; res[1] = index2; return res; } public void test() { int[] numbers = new int[4]; numbers[0] = 2; numbers[1] = 7; numbers[2] = 11; numbers[3] = 15; int target = 9; int[] res = new int[2]; res = twoSum(numbers, target); System.out.println(res[0]); System.out.println(res[1]); } public static void main(String args[]) { TwoSum_1 ts = new TwoSum_1(); ts.test(); } }
另外,Java没有现成的 swap()函数,需要自己写。