zoukankan      html  css  js  c++  java
  • 集合应用场景2——数据结构

    Stack:LIFO

    ArrayList & LinkedList

    LinkedList中实现的:

    单向链表

    +push(in:E e)
    {//方法体:通过使用addFirst(e)
    }

    +pop()
    {//通过使用removeFirst();
    }

    同理:也可以通过操作队尾实现。
    //addLast(e) && removeLast();



    Queue:FIFO

    Queue  && Deque




    双向链表:通过实现ListIterator接口

    LinkedHashMap实现

    LRU:last recently used 算法

    public static void main(String[] args) {
    //LRU:Least Recently Used,最近最少使用
    //缓存:缓存热点数据,经常使用的数据
    // 一种淘汰算法:
    //当缓存已满时,再向缓存内添加内容时,删除(淘汰)掉缓存中已存在元素最近最少被使用的那个
    //LinkedHashMap 支持LRU算法,
    //LinkedHashMap 具有HashMap 的所有功能 +可保持插入顺序(遍历)
    //HashMap + 双向链表
    //双向链表:head、tail;after、before
    //LinkedHashMap是有序的 boolean accessOrder
    //1. 插入顺序:每次插入元素,将元素放到双向链表的末尾
    //2. 访问顺序:每次插入、获取元素,将该元素放到双向链表的末尾
    //---put()、get()元素放置末尾

    //LinkedHashMap linkedHashMap = new LinkedHashMap(5);
    LRU<String,String> lru = new LRU<>();
    lru.put("001","macro");
    lru.put("002","macro");
    lru.put("005","macro");
    lru.put("003","macro");
    lru.put("004","macro");
    System.out.println(lru);
    System.out.println(lru.get("005"));
    System.out.println(lru);
    System.out.println(lru.put("004","huge"));
    System.out.println(lru);
    System.out.println(lru.put("064","huge"));
    System.out.println(lru);

    }

    static class LRU<K,V> extends LinkedHashMap<K,V> implements Map<K,V> {
    private int max = 5;
    public LRU(){
    //accessOrder: true---访问顺序;false---插入顺序
    super(10,0.75f,true);

    }

        //本质:在添加元素过程中,(业务流程决定:会调用removeEldestEntry()操作)
    @Override
    protected boolean removeEldestEntry(Entry<K, V> eldest) {
    if(size()>max){
    System.out.println("淘汰掉的元素:"+eldest);
    return true;
    }
    return false;
    }
    }
  • 相关阅读:
    CodeForces 173B Chamber of Secrets spfa
    CodeForces 173A Rock-Paper-Scissors 数学
    Codeforces Gym 100803G Flipping Parentheses 线段树+二分
    Codeforces Gym 100803D Space Golf 物理题
    Codeforces Gym 100803F There is No Alternative 暴力Kruskal
    Codeforces Gym 100803C Shopping 贪心
    《白日梦想家》观后感
    select sum也会返回null值
    mysql update更新带子查询的实现方式
    mysql 添加索引 mysql 如何创建索引
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/12537539.html
Copyright © 2011-2022 走看看