LeetCode刷题笔记——堆(Arrays、PriorityQueue、HashMap)

1. ArraysCollections

Arrays.sort()方法主要是针对各种数据类型(基本数据类型和引用对象类型)的数组元素排序
在这里插入图片描述
引用对象类型数组的排序sort()方法要用到接口Comparator<T>,对其排序内部的比较函数compare()进行重写,以便于我们按照我们的排序要求对引用对象数组极性排序,默认是升序排序,但可以自己自定义成降序排序。
在这里插入图片描述
Arrays.toString用于打印数组
在这里插入图片描述
Arrays.asList() 详解

java.util.Collections中的静态方法的Collections.sort()主要是针对集合框架中的动态数组,链表,树,哈希表等( ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap )进行排序。

java中排序函数sort()使用,Arrays.sort()和Collections.sort()

2. 优先队列PriorityQueue

Java优先队列详解

例题——703. 数据流中的第K大元素

//基本用法
class KthLargest {

	//优先队列:每次取出的元素都是队列中权值最小的
    PriorityQueue<Integer> queue;
    int k;
    public KthLargest(int k, int[] nums) {
        int len = nums.length;
        queue = new PriorityQueue<>(k);
        this.k = k;
        for(int i=0;i<len;i++){
            add(nums[i]);
        }
    }
    
    public int add(int val) {
    	//回队列头部的元素,如果队列为空,则返回NULL
        if(queue.size()<k) {
            queue.add(val);
        } else if (val>queue.peek()){
            queue.poll();
            queue.add(val);
        }
        return queue.peek();
    }
}
//通过传参Comparator创建优先队列
PriorityQueue<Map.Entry<Character, Integer>> maxHeap = new PriorityQueue<>(
                (e1,e2)->{return e2.getValue()-e1.getValue();});

3. HashMap<>()

①常用方法
entrySet()方法返回一个与哈希映射具有相同元素的集合
keySet() 方法返回一个key的集合(Set)

②遍历HashMap<>()的四种方法:

public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>();
    map.put("1", "value1");
    map.put("2", "value2");
    map.put("3", "value3");
    map.put("4", "value4");
    
    //第一种:普通使用,二次取值(性能差)
    for(String key:map.keySet()){
     System.out.println("Key: "+key+" Value: "+map.get(key));
    }
    
    //第二种(性能比第一种好,一次取值)
    Iterator map1it=map.entrySet().iterator();
    while(map1it.hasNext()){
		Map.Entry<String, String> entry=(Entry<String, String>) map1it.next();
		System.out.println("Key: "+entry.getKey()+" Value: "+entry.getValue());
    }
    
    //第三种:推荐,尤其是容量大时  
    for(Map.Entry<String, String> entry: map.entrySet()){
		System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
    }
    
    //第四种  
    for(String v:map.values()){
		System.out.println("The value is "+v);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值