zoukankan      html  css  js  c++  java
  • 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()函数,需要自己写。

  • 相关阅读:
    JMeter性能测试中控制业务比例
    软件版本命名规范
    软件测试方法——静态测试与动态测试
    安装BugFree 3.0.4时出现的问题
    Linux下给mysql创建用户分配权限
    LoadRunner 测试脚本
    linux dd命令详解
    Linux查看CPU和内存使用情况
    Error:java: 无效的源发行版: 10
    rf接口自动化之结果校验
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3741203.html
Copyright © 2011-2022 走看看