当前位置: 首页 > news >正文

直播网站开发框架大学网站的设计方案

直播网站开发框架,大学网站的设计方案,江西省赣州市地图全图,个性字体logo设计目录 一.LinkedHashSet和LinkedHashMap 1.基本介绍 2.与HashSet和HashMap的区别 3.LinkedHashSet和LinkedHashMap具体的方法 1.LinkedHashSet 2.LinkedHashMap 二.模拟代码实现LinkedHashMap 三.具体应用 一.LinkedHashSet和LinkedHashMap 1.基本介绍 顾名思义,根据名…

目录

一.LinkedHashSet和LinkedHashMap

1.基本介绍

2.与HashSet和HashMap的区别

3.LinkedHashSet和LinkedHashMap具体的方法

1.LinkedHashSet

2.LinkedHashMap

二.模拟代码实现LinkedHashMap

三.具体应用


一.LinkedHashSet和LinkedHashMap

1.基本介绍

顾名思义,根据名字我们可以知道LinkedHastSet和LinkedHashMap底层是用链表实现的,具体是使用双向链表实现的,下面是继承树,LinkedHashMap继承了父类HashMap,因此HashMap中的方法,在LinkedHashMap中都是可以使用的.(LinkedHashSet一样)

2.与HashSet和HashMap的区别

我们都知道HashSet和HashMap是根据HashCode存储到具体位置,例如是求余7存储到具体的索引,那么当我们遍历时候,存储的顺序和添加的顺序是不一样的.例如如下代码执行的结果,toString打印出来的和添加的顺序不一样

HashSet<Integer> set = new HashSet<>();
set.add(1);
set.add(5);
set.add(4);
set.add(3);
System.out.println(set);//[1, 3, 4, 5]

 而LinkedHashSet底层使用链表实现的,每次添加都是尾插法进行添加,所以添加的顺序一定是和遍历的顺序是一样的(这里采用迭代器遍历)

LinkedHashSet<Integer> set1 = new LinkedHashSet<>();
set1.add(1);
set1.add(5);
set1.add(4);
set1.add(3);
Iterator<Integer> iterator = set1.iterator();
while (iterator.hasNext()){System.out.print(iterator.next()+"  ");//1  5  4  3 
}

3.LinkedHashSet和LinkedHashMap具体的方法

1.LinkedHashSet

具体就是以下方法,LinkedHashSet和HashSet一样,不保存值相同的元素

LinkedHashSet<Integer> set = new LinkedHashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(1);
System.out.println(set);//[1, 2, 3]
set.remove(1);//删除成功返回true,删除失败返回false
System.out.println(set);//[2, 3]
System.out.println(set.size());//2
System.out.println(set.isEmpty());//false
System.out.println(set.contains(2));//true

2.LinkedHashMap

LinkedHashMap<Integer,String> map=new LinkedHashMap<>();
map.put(1,"1");
map.put(2,"2");
map.put(3,"3");
System.out.println(map);//{1=1, 2=2, 3=3}
map.remove(1);
System.out.println(map);//{2=2, 3=3}
System.out.println(map.size());//2
map.put(1,"10");
System.out.println(map);//{2=2, 3=3, 1=10}
System.out.println(map.containsKey(1));//true
System.out.println(map.containsValue("10"));//true

二.模拟代码实现LinkedHashMap

这里我们为了方便,就没有采用泛型来定义.用了HashMap来存储键和对应的Node结点,这样根据键就可以找到对应的Node在LinkedHashMap中的位置,并且添加的时候和遍历的顺序也是一致的,这是一种比较好理解的LinkedHashMap的实现方式.链表这里我们采用了双向链表的存储方式,结点存储key和value,并且结点的key和HashMap的key是一一对应的.

public class LinkedHashMap extends LinkedList {//HashMap的键(key)和LinkedList的Node的键相互对应HashMap<Integer, Node> map;LinkedList list;public LinkedHashMap() {map = new HashMap<>();list = new LinkedList();}public void addLast(int key, int val) {Node x = new Node(key, val);list.addLast(x);map.put(key, x);}public void remove(int key) {Node x = map.get(key);list.remove(x);map.remove(x);}public int size() {return list.size();}public boolean containsKey(int key){return map.containsKey(key);}}class LinkedList {class Node {public int key, val;public Node next, prev;public Node(int key, int val) {this.key = key;this.val = val;}}//头尾虚拟节点private Node head, tail;//链表元素数private int size;public LinkedList() {head = new Node(0, 0);tail = new Node(0, 0);head.next = tail;tail.prev = head;size = 0;}public void addLast(Node x) {x.prev = tail.prev;x.next = tail;tail.prev.next = x;tail.prev = x;size++;}public void remove(Node x) {x.prev.next = x.next;x.next.prev = x.prev;size--;}public Node removeFirst() {//空链表if (head.next == tail) {return null;}Node first = head.next;remove(first);return first;}public int size() {return size;}
}

三.具体应用

具体在实现LRU缓存淘汰算法上有应用,只要就是应用的LinkedHashMap的存储的顺序和添加的顺序是一样的特性,我们对于不经常使用的数据进行淘汰处理,这个时候我们需要确保存储的顺序和添加的顺序保持一致性,也就是当内存满了之后,先添加的进行淘汰,具体的讲解明天进行博客的更新!!!!!!!!!

http://www.yayakq.cn/news/761129/

相关文章:

  • 文山城乡建设部网站首页网站建设合同内容与结构
  • 中小企业网站建设维护内容想做个电影网站该怎么做
  • 河南网站定制伪原创网站
  • 免费建设物流网站什么是网络营销概念
  • 定海区住房和城乡建设局网站如何调用网站列表页
  • 只建设电子商务网站不维护重庆找工作哪个网站好
  • 外贸型网站推广与监测WordPress中文空格
  • 广州网站制作流程如何做弹幕视频网站
  • 哪里有网站制作服务腾讯朋友圈广告投放价格
  • 网站隐私条款模板wordpress多媒体权限
  • 易语言做电影网站源码北京互联网教育公司排名
  • 有没有一种app类似网站建设企业网站建设的意义
  • 网站源码爬取工具网络推广公司怎么赚钱的
  • 房屋信息网站网站建设合同 附件
  • WordPress顶部登陆代码天津seo排名效果好
  • 中国建设工程造价管理协会网站查询最简约的网站
  • 仁怀那里可以做网站开网店的企业名称
  • 网站后台培训广告页面模板
  • 电子商务有限公司网站网站设计中 查询怎么做
  • 邯郸哪里可以学建网站强大的建筑人才网
  • discuz网站伪静态设置王野摩托
  • 郑州做网站外包的公司有哪些上海十大网站排名
  • 中国建设银行官网站贺岁产品网络功能设计
  • 做淘客网站需要备案wordpress 浮动定位
  • 茶叶怎么做网站销售搭建 wordpress
  • 网站建设情况的汇报wordpress炫酷主题
  • 织梦如何新建网站什么软件可以制作网页动画
  • wordpress站群管理破解版网站建设哪些是需要外援的问题
  • 做网站公司融资多少做外贸的阿里巴巴网站是哪个
  • 企业型网站建设咨询电话软件开发属于什么专业