• 集合应用场景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;
    }
    }
  • 相关阅读:
    bootstrap 导航栏、输入框按钮组、栅格系统
    Python排序算法冒泡排序选择排序插入排序
    Python 解螺旋数组
    初到博客园,请多指教
    gcd, map for ocaml
    qsort for ocaml
    子序列和最大的问题
    将一个整数划分为非负整数的部分
    filter in Ocaml
    scheme中表只能操作头部带来的一个问题
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/12537539.html
Copyright © 2020-2023  润新知