Java - LinkedHashMap(有序 map)获取第一个元素和最后一个元素
获取LinkedHashMap中的头部元素(最早添加的元素):时间复杂度O(1)
public <K, V> Entry<K, V> getHead(LinkedHashMap<K, V> map) {return map.entrySet().iterator().next();
}
获取LinkedHashMap中的末尾元素(最近添加的元素):时间复杂度O(n)
public <K, V> Entry<K, V> getTail(LinkedHashMap<K, V> map) {Iterator<Entry<K, V>> iterator = map.entrySet().iterator();Entry<K, V> tail = null;while (iterator.hasNext()) {tail = iterator.next();}return tail;
}
通过反射获取LinkedHashMap中的末尾元素:时间复杂度O(1),访问tail属性
public <K, V> Entry<K, V> getTailByReflection(LinkedHashMap<K, V> map)throws NoSuchFieldException, IllegalAccessException {Field tail = map.getClass().getDeclaredField("tail");tail.setAccessible(true);return (Entry<K, V>) tail.get(map);
}
测试代码
import static org.junit.Assert.assertEquals;
import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import org.junit.Before;
import org.junit.Test;public class TestLinkedHashMap {private LinkedHashMap<String, Integer> map = new LinkedHashMap<>();private String letters[] = { "a", "b", "c", "d", "e" };@Beforepublic void init() {for (int i = 0; i < letters.length; i++) {map.put(letters[i], i + 1);}}@Testpublic void testGetHead() {assertEquals(getHead(map).getKey(), "a");assertEquals(getHead(map).getValue(), Integer.valueOf(1));}@Testpublic void testGetTail() {assertEquals(getTail(map).getKey(), "e");assertEquals(getTail(map).getValue(), Integer.valueOf(5));}@Testpublic void testGetTailByReflection() throws NoSuchFieldException, IllegalAccessException {assertEquals(getTailByReflection(map).getKey(), "e");assertEquals(getTailByReflection(map).getValue(), Integer.valueOf(5));}public <K, V> Entry<K, V> getHead(LinkedHashMap<K, V> map) {return map.entrySet().iterator().next();}public <K, V> Entry<K, V> getTail(LinkedHashMap<K, V> map) {Iterator<Entry<K, V>> iterator = map.entrySet().iterator();Entry<K, V> tail = null;while (iterator.hasNext()) {tail = iterator.next();}return tail;}@SuppressWarnings("unchecked")public <K, V> Entry<K, V> getTailByReflection(LinkedHashMap<K, V> map)throws NoSuchFieldException, IllegalAccessException {Field tail = map.getClass().getDeclaredField("tail");tail.setAccessible(true);return (Entry<K, V>) tail.get(map);}
}
Java - LinkedHashMap(有序 map)获取第一个元素和最后一个元素相关推荐
- jq取第一个子元素为select_jquery如何获取第一个或最后一个子元素?
jquery如何获取第一个或最后一个子元素? 通过children方法,children("input:first-child") $(this).children("i ...
- jquery如何获取第一个或最后一个子元素?
jquery如何获取第一个或最后一个子元素?通过children方法,children("input:first-child")$(this).children("inp ...
- java怎么指定父窗口大小_[Java教程]jQuery如何获取div距离窗口顶部或者父元素顶部的距离...
[Java教程]jQuery如何获取div距离窗口顶部或者父元素顶部的距离 0 2016-01-03 11:00:19 jQuery如何获取div距离窗口顶部或者父元素顶部的距离: 在实际应用或许会需 ...
- php去除数组中的第一个元素,php如何删除数组的第一个元素和最后一个元素
对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作. ( ...
- WPF 元素相对另外一个元素的 相对位置
原文:WPF 元素相对另外一个元素的 相对位置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/740 ...
- javaScript取得当前元素的下一个元素
如何取得当前元素的下一个元素呢? 例如,这有两个div <div id="wrap1" class="wrap">这是一个div</div&g ...
- javascript判断一个元素是另外一个元素的子元素
javascript判断一个元素是另外一个元素的子元素用途有很多,最常用的就是当点击页面的空白处去执行某些操作,比如弹出层等. function isParent (obj,parentObj){ w ...
- kotlin List删除一个元素,添加一个元素
kotlin List移除一个元素,添加一个元素时没有 remove和add函数只有 -= 和 += 在kotlin ArrayList中才有remove和add函数 没有 -= 和 += kotli ...
- 一个元素位于另一个元素之上,点击上面的元素引发下面元素事件操作
一个元素位于另一个元素之上,点击上面的元素引发下面元素事件操作 <body><!-- 此布局为: 上面内容盒子覆盖在了上传文本区域之上--><!-- 想要点击'上面盒子内 ...
- 删除列表元素中最后一个元素
删除列表元素中最后一个元素 清楚明了 壹 <title></title><script src="js/jquery.js"></scri ...
最新文章
- Lottie开源动画库
- Scala 语言转义字符
- SharePoint Designer 2010创建限制筛选器
- 铜陵信息化建设和智慧城市发展成果惠及百姓
- mysql slave 线程 简书_【MySQL】你真的读懂了slave status吗?
- 《此生未完成》痛句摘录(2)
- 茅粉又疯狂!“蒂芙尼蓝”茅台炒至8500!
- 关于Web端-UI自动化测试
- java for循环 等待_java-等待在循环内按下键
- 12306再曝漏洞,一张身份证可买两张相同火车票
- 【读书笔记《Android游戏编程之从零开始》】14.游戏开发基础(Bitmap 位图的渲染与操作)
- ogg格式怎样才能转换成MP3格式
- 96K的3d FPS游戏-毁灭杀手(kkrieger)
- session fixation漏洞简述
- 用友漏洞php,Phpwind GET型CSRF任意代码执行漏洞公开
- 经验贴: 如何选购相机, 电脑, 手机, 电脑配件?
- OPC DA与OPC UA的区别
- Python---元祖、循环
- memcpy内存拷贝和=直接赋值有什么区别
- CSS_后端工程师必备知识-从入门到劝退详解-呕心沥血撰写(滑稽)