-
java map 第一个元素_【Java集合类】 LinkedHashMap获取第一个元素和最后一个元素
2021-02-12 18:54:07获取LinkedHashMap中的头部元素(最早添加的元素):时间复杂度O(1)public Entry getHead(LinkedHashMap map) {return map.entrySet().iterator().next();}获取LinkedHashMap中的末尾元素(最近添加的元素):时间复杂度...获取LinkedHashMap中的头部元素(最早添加的元素):
时间复杂度O(1)
public Entry getHead(LinkedHashMap map) {
return map.entrySet().iterator().next();
}
获取LinkedHashMap中的末尾元素(最近添加的元素):
时间复杂度O(n)
public Entry getTail(LinkedHashMap map) {
Iterator> iterator = map.entrySet().iterator();
Entry tail = null;
while (iterator.hasNext()) {
tail = iterator.next();
}
return tail;
}
通过反射获取LinkedHashMap中的末尾元素:
时间复杂度O(1),访问tail属性
public Entry getTailByReflection(LinkedHashMap map)
throws NoSuchFieldException, IllegalAccessException {
Field tail = map.getClass().getDeclaredField("tail");
tail.setAccessible(true);
return (Entry) 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 map = new LinkedHashMap<>();
private String letters[] = { "a", "b", "c", "d", "e" };
@Before
public void init() {
for (int i = 0; i < letters.length; i++) {
map.put(letters[i], i + 1);
}
}
@Test
public void testGetHead() {
assertEquals(getHead(map).getKey(), "a");
assertEquals(getHead(map).getValue(), Integer.valueOf(1));
}
@Test
public void testGetTail() {
assertEquals(getTail(map).getKey(), "e");
assertEquals(getTail(map).getValue(), Integer.valueOf(5));
}
@Test
public void testGetTailByReflection() throws NoSuchFieldException, IllegalAccessException {
assertEquals(getTailByReflection(map).getKey(), "e");
assertEquals(getTailByReflection(map).getValue(), Integer.valueOf(5));
}
public Entry getHead(LinkedHashMap map) {
return map.entrySet().iterator().next();
}
public Entry getTail(LinkedHashMap map) {
Iterator> iterator = map.entrySet().iterator();
Entry tail = null;
while (iterator.hasNext()) {
tail = iterator.next();
}
return tail;
}
@SuppressWarnings("unchecked")
public Entry getTailByReflection(LinkedHashMap map)
throws NoSuchFieldException, IllegalAccessException {
Field tail = map.getClass().getDeclaredField("tail");
tail.setAccessible(true);
return (Entry) tail.get(map);
}
}
-
java map取第一个元素_Java中如何取出Map集合中的元素
2021-02-12 23:20:18Java的Map集合中没有迭代器,需要将其转换为set集合/*map集合的两种取出方式:1,SetkeySet:将map中所有的键存入到Set集合。因为set具备迭代器。 所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的...Java的Map集合中没有迭代器,需要将其转换为set集合
/*map集合的两种取出方式:1,SetkeySet:将map中所有的键存入到Set集合。因为set具备迭代器。 所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。 Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。2,Set> entrySet:将map集合中的映射关系存入到了set集合中, 而这个关系的数据类型就是:Map.Entry Entry其实就是Map中的一个static内部接口。 为什么要定义在内部呢? 因为只有有了Map集合,有了键值对,才会有键值的映射关系。 关系属于Map集合中的一个内部事物。 而且该事物在直接访问Map集合中的元素。*/import java.util.*;class MapDemo2 { public static void main(String[] args) { Mapmap = new HashMap(); map.put('02','zhangsan2'); map.put('03','zhangsan3'); map.put('01','zhangsan1'); map.put('04','zhangsan4'); //将Map集合中的映射关系取出。存入到Set集合中。 Set> entrySet = map.entrySet(); Iterator> it = entrySet.iterator(); while(it.hasNext()) { Map.Entryme = it.next(); String key = me.getKey(); String value = me.getValue(); System.out.println(key+':'+value); } /* //先获取map集合的所有键的Set集合,keySet(); SetkeySet = map.keySet(); //有了Set集合。就可以获取其迭代器。 Iteratorit = keySet.iterator(); while(it.hasNext()) { String key = it.next(); //有了键可以通过map集合的get方法获取其对应的值。 String value = map.get(key); System.out.println('key:'+key+',value:'+value); } */ }}/*Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。interface Map{ public static interface Entry { public abstract Object getKey(); public abstract Object getValue(); }}class HashMap implements Map{ class Hahs implements Map.Entry { public Object getKey(){} public Object getValue(){} } }*/
练习题:
/*每一个学生都有对应的归属地。学生Student,地址String。学生属性:姓名,年龄。注意:姓名和年龄相同的视为同一个学生。保证学生的唯一性。1,描述学生。2,定义map容器。将学生作为键,地址作为值。存入。3,获取map集合中的元素。*/import java.util.*;class Student implements Comparable{ private String name; private int age; Student(String name,int age) { this.name = name; this.age = age; } //为了确保使用TreeSet集合存储元素,使得Student类实现Comparable接口和实现compareTo方法 public int compareTo(Student s) { int num = new Integer(this.age).compareTo(new Integer(s.age)); if(num==0) return this.name.compareTo(s.name); return num; }//为了确保使用HashSet集合存储元素,实现hashCode和equals方法 public int hashCode(){return name.hashCode()+age*34;}public boolean equals(Object obj){if(!(obj instanceof Student))throw new ClassCastException('类型不匹配');Student s = (Student)obj;return this.name.equals(s.name) && this.age==s.age;}public String getName(){return name;}public int getAge(){return age;}public String toString(){return name+':'+age;}}class MapTest{public static void main(String[] args) {HashMaphm = new HashMap();hm.put(new Student('lisi1',21),'beijing');hm.put(new Student('lisi1',21),'tianjin');hm.put(new Student('lisi2',22),'shanghai');hm.put(new Student('lisi3',23),'nanjing');hm.put(new Student('lisi4',24),'wuhan');//第一种取出方式 keySetSetkeySet = hm.keySet();Iteratorit = keySet.iterator();while(it.hasNext()){Student stu = it.next();String addr = hm.get(stu);System.out.println(stu+'..'+addr);}//第二种取出方式 entrySetSet> entrySet = hm.entrySet();Iterator> iter = entrySet.iterator();while(iter.hasNext()){Map.Entryme = iter.next();Student stu = me.getKey();String addr = me.getValue();System.out.println(stu+'.........'+addr);}}}
练习2
-
Java - LinkedHashMap(有序 map)获取第一个元素和最后一个元素
2020-07-28 09:23:59获取LinkedHashMap中的头部元素(最早添加的元素):时间复杂度O(1) public <K, V> Entry<K, V> getHead(LinkedHashMap<K, V> map) { return map.entrySet().iterator().next(); } 获取...获取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" }; @Before public void init() { for (int i = 0; i < letters.length; i++) { map.put(letters[i], i + 1); } } @Test public void testGetHead() { assertEquals(getHead(map).getKey(), "a"); assertEquals(getHead(map).getValue(), Integer.valueOf(1)); } @Test public void testGetTail() { assertEquals(getTail(map).getKey(), "e"); assertEquals(getTail(map).getValue(), Integer.valueOf(5)); } @Test public 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获取第一个元素和最后一个元素
2018-12-10 11:32:05Java LinkedHashMap获取第一个元素和最后一个元素 作者是 在线疯狂 发布于 2016年10月27日 在 Java. 获取LinkedHashMap中的头部元素(最早添加的元素): 时间复杂度O(1) public <K, V> ...Java LinkedHashMap获取第一个元素和最后一个元素
作者是 在线疯狂 发布于 2016年10月27日 在 Java.获取LinkedHashMap中的头部元素(最早添加的元素):
时间复杂度O(1)
public <K, V> Entry<K, V> getHead(LinkedHashMap<K, V> map) { return map.entrySet().iterator().next(); }
- 1
- 2
- 3
获取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; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
通过反射获取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); }
- 1
- 2
- 3
- 4
- 5
- 6
测试代码:
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" }; @Before public void init() { for (int i = 0; i < letters.length; i++) { map.put(letters[i], i + 1); } } @Test public void testGetHead() { assertEquals(getHead(map).getKey(), "a"); assertEquals(getHead(map).getValue(), Integer.valueOf(1)); } @Test public void testGetTail() { assertEquals(getTail(map).getKey(), "e"); assertEquals(getTail(map).getValue(), Integer.valueOf(5)); } @Test public 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); } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
本文链接:http://bookshadow.com/weblog/2016/10/27/java-linked-hash-map-get-first-and-get-last/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码
-
【Java集合类】 LinkedHashMap(有序的map)获取第一个元素和最后一个元素
2018-08-07 14:31:14【Java集合类】 LinkedHashMap获取第一个元素和最后一个元素 获取LinkedHashMap中的头部元素(最早添加的元素): 时间复杂度O(1) public &amp;lt;K, V&amp;gt; Entry&amp;lt;K, V&... -
java获取Map中指定key后的所有元素
2020-10-12 10:38:49需求:给定一个有序的map,已知一个map中存在的key,但是不知道key的指定位置,需要根据这个key获取到这个key元素后的所有元素。 Map<String, String> map = new LinkedHashMap<>(); map.put("qqq","第1... -
java hashmap 获取第一个元素_java - 如何从hashmap中获取一个条目而不进行迭代
2021-02-27 20:52:59java - 如何从hashmap中获取一个条目而不进行迭代如果密钥未知,是否有一种从HashMap中只获得一个Entry的优雅方式,无需迭代。由于进入的顺序并不重要,我们可以说类似的东西hashMapObject.get(zeroth_index);虽然我... -
java hashmap 获取第一个元素_JavaHashmap:如何从值中获取密钥?
2021-02-27 20:52:22如果您的数据结构有多对一键和值之间的映射应该迭代条目并选择所有合适的键:publicstaticSetgetKeysByValue(Mapmap,Evalue){Setkeys=newHashSet();for(Entryentry:map.entrySet()){if(Objects.equals(value,entry.... -
java result元素_从Java 8流中获取第n个元素
2021-03-08 21:56:09这就导致了对Java流(例如map和filter)的操作必须独立于流中的项目位置或其周围的项目。 这具有易于分割流以进行并行处理的优点。 它具有使某些操作更复杂的缺点。因此,简单的答案是,没有简单的方法可以完成诸如第... -
java stream 取index_关于java:Stream获取与布尔值匹配的第一个元素的索引的方法
2021-03-15 03:03:27我想获取具有特定用户名的流中(第一个)用户的索引。 我并不想实际上将User设置为某些描述的User的.equals(),只是具有相同的用户名。我可以想到执行此操作的丑陋方法(重复和计数),但感觉应该有一种不错的方法(可能... -
Java 从第一个List中去除所有第二个List中与之属性重复的元素
2021-02-22 16:49:22第一种在java中用HashMap Map<String, String> oldUserMap = new HashMap<String, String>(); //把查询到的数据的唯一值stuNum,存入map中 for(User user : userList) { oldUserMap.put(user.getStuNum... -
linkedhashmap获取第n个元素_Java中最大的数据结构:LinkedHashMap了解一下?
2020-12-02 07:53:36点击上方“Java专栏”,选择“置顶或者星标”第一时间阅读精彩文章!☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜来源:https://thinkinjava.cn/前言Map 家族数量众多,其中 HashMap 和 ... -
c++ list容器获取第n给元素_Java容器详解
2021-01-09 04:47:49什么是容器在Java当中,有一个类专门用来存放其它类的对象,这个类就叫做容器,它就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 。2. 常用的Java容器二、List,Map,Set,Queue1. List有序的 ... -
c++ map iterator 获取key_Java集合框架——Map接口
2020-11-28 14:11:58第三阶段 JAVA常见对象的学习集合框架——Map集合在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息。今天我们所介绍的Map... -
Java第十六天-map
2019-04-12 21:40:45* Object put(Object key,Object value):向map中添加一个元素 Object * remove(Objectkey):按照指定的key删除此key-value Object * get(Objectkey):获取指定key的value值,若无此value,则返回null * 遍历... -
java学习第41天,栈 MAP
2017-10-31 20:31:061,pop(); 出栈操作 2,push();入栈操作 3,peek();...5,MAP 是一个类似 两列 多行的数据结构 每行由一个 key 和一个 value 对构成 6,put(K k,V v);加入一对 如果 Map 中已经有了 同样的 k 那 -
Java使用HashMap获取字符串中字符出现的个数
2020-10-29 13:24:05//判断一个元素出现的次数 //第一步:使用Scanner用户输入字符串,使用toArray方法转换为数组 //创建map集合,字符作为关键字key,value作为字符出现的次数 //遍历字符串,获取每一个字符 //把获取到的字符串在map... -
java 中的哈希映射_如何从Java中的哈希映射获取所有最小值
2021-03-22 13:25:34我有一个Hash Map,其中包含Request类型的Keys对象和...但是,这段代码只给了我一个这样的元素,即它通过迭代找到的第一个元素,即使我知道还有更多元素.例如,让我们说地图有以下请求 – 即密钥(我给出请求ID):3 | 5 |... -
JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)
2013-05-07 17:18:07第1章 让自己的第一个Java程序跑起来 2 教学视频:19分钟 1.1 想要用Java改变这个世界吗? 2 1.1.1 Java有什么优势? 2 1.1.2 Java在哪儿? 3 1.2 准备好开始Java之旅 3 1.2.1 下载JDK 4 1.2.2 安装JDK 5 ... -
Java Map集合框架及HashMap 底层实现
2020-06-07 17:29:16HashMap : 实现原理:基于Map接口实现,数据结构采用数组 + 链表 + 红黑树,元素以键值对的形式存储,使用key的二...2.检查第一个node的key hash是否为要查找的原属,如果是的还直接返回; 3.获取下一个节点判断类型是. -
JAVA进阶之遍历Map集合的几种方法
2021-03-13 23:13:35众所周知Map集合里存储元素是以键值对的方式存储元素,一个是Key一个是value。 开发过程中推荐使用第四种方法,本文章注释很清晰,仔细看完相信会对你有所帮助的! 方法一:首先去通过获取迭代器,通过迭代器去遍历... -
牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口...
2017-09-04 10:51:00不多说,直接上干货! ... 集合框架中包含了大量集合接口、这些接口的实现类和操作它们的算法。... 集合容器因为内部的数据结构...Collection是一次添加一个元素。 iterator是迭代获取元素 第一大类... -
从0开始学Java,打卡第10天(20输出式学习计划)-8Map的常用实现类HashMap及主要方法的使用
2020-05-10 20:40:09Object put(Object key,Object vaule):向Map中添加一个元素 Object remove(Object key):按照指定的key删除此key-value void putAll(Map t) void clear():清空 元素查询的操作: Object get(Object key):获取指定... -
Java入门1·2·3:一个老鸟的Java学习心得.PART2(共3个)
2013-05-07 17:19:14第1章 让自己的第一个Java程序跑起来 2 教学视频:19分钟 1.1 想要用Java改变这个世界吗? 2 1.1.1 Java有什么优势? 2 1.1.2 Java在哪儿? 3 1.2 准备好开始Java之旅 3 1.2.1 下载JDK 4 1.2.2 安装JDK 5 ... -
Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)
2013-05-07 17:20:12第1章 让自己的第一个Java程序跑起来 2 教学视频:19分钟 1.1 想要用Java改变这个世界吗? 2 1.1.1 Java有什么优势? 2 1.1.2 Java在哪儿? 3 1.2 准备好开始Java之旅 3 1.2.1 下载JDK 4 1.2.2 安装JDK 5 ... -
Java学习第三周,基础知识总结记录
2020-08-23 16:14:47类集 Java对数据额结构成熟的实现 三个接口Collection;Map;Iterator Collection 存储单个数据的顶级接口 ...linked list,由一系列结点node(链表中每一个元素称为结点)组成 class Node{ Object data; No -
java最大最小值交换位置_java-在数据结构中找到最大值最小值和最大...
2021-03-08 08:11:10我将使用TreeMap的接口,但是它应该具有类似于c的std :: map的实现(它仅在更新过程中维护对第一个和最后一个元素的迭代器).第一地图将是地图.任务,第二个-Map< Priority,Integer>.优先事项.每个现有优先级值...