精华内容
下载资源
问答
  • 获取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集合中没有迭代器,需要将其转换为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

    展开全文
  • 获取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获取第一个元素和最后一个元素  作者是 在线疯狂 发布于 2016年10月27日 在 Java. 获取LinkedHashMap的头部元素(最早添加的元素): 时间复杂度O(1) public &lt;K, V&gt; ...

    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获取第一个元素和最后一个元素 获取LinkedHashMap的头部元素(最早添加的元素): 时间复杂度O(1) public &amp;amp;lt;K, V&amp;amp;gt; Entry&amp;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中获取一个条目而不进行迭代如果密钥未知,是否有一种从HashMap只获得一个Entry的优雅方式,无需迭代。由于进入的顺序并不重要,我们可以说类似的东西hashMapObject.get(zeroth_index);虽然我...
  • 如果您的数据结构有多对一键和值之间的映射应该迭代条目并选择所有合适的键:publicstaticSetgetKeysByValue(Mapmap,Evalue){Setkeys=newHashSet();for(Entryentry:map.entrySet()){if(Objects.equals(value,entry....
  • 这就导致了对Java流(例如map和filter)的操作必须独立于流的项目位置或其周围的项目。 这具有易于分割流以进行并行处理的优点。 它具有使某些操作更复杂的缺点。因此,简单的答案是,没有简单的方法可以完成诸如...
  • 我想获取具有特定用户名的流(第一个)用户的索引。 我并不想实际上将User设置为某些描述的User的.equals(),只是具有相同的用户名。我可以想到执行此操作的丑陋方法(重复和计数),但感觉应该有一种不错的方法(可能...
  • 第一种在java中用HashMap Map<String, String> oldUserMap = new HashMap<String, String>(); //把查询到的数据的唯一值stuNum,存入map中 for(User user : userList) { oldUserMap.put(user.getStuNum...
  • 点击上方“Java专栏”,选择“置顶或者星标”第一时间阅读精彩文章!☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜来源:https://thinkinjava.cn/前言Map 家族数量众多,其中 HashMap 和 ...
  • 什么是容器在Java当中,有一个类专门用来存放其它类的对象,这个类就叫做容器,它就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 。2. 常用的Java容器二、List,Map,Set,Queue1. List有序的 ...
  • 三阶段 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:06
    1,pop(); 出栈操作 2,push();入栈操作 3,peek();...5,MAP一个类似 两列 多行的数据结构 每行由一个 key 和一个 value 对构成  6,put(K k,V v);加入一对 如果 Map 已经有了 同样的 k 那
  • //判断一个元素出现的次数 //第一步:使用Scanner用户输入字符串,使用toArray方法转换为数组 //创建map集合,字符作为关键字key,value作为字符出现的次数 //遍历字符串,获取每一个字符 //把获取到的字符串在map...
  • 我有一个Hash Map,其中包含Request类型的Keys对象和...但是,这段代码只给了我一个这样的元素,即它通过迭代找到的第一个元素,即使我知道还有更多元素.例如,让我们说地图有以下请求 – 即密钥(我给出请求ID):3 | 5 |...
  • 第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 ...
  • HashMap : 实现原理:基于Map接口实现,数据结构采用数组 + 链表 + 红黑树,元素以键值对的形式存储,使用key的二...2.检查第一个node的key hash是否为要查找的原属,如果是的还直接返回; 3.获取下一个节点判断类型是.
  • 众所周知Map集合里存储元素是以键值对的方式存储元素一个是Key一个是value。 开发过程推荐使用四种方法,本文章注释很清晰,仔细看完相信会对你有所帮助的! 方法一:首先去通过获取迭代器,通过迭代器去遍历...
  • 不多说,直接上干货! ... 集合框架包含了大量集合接口、这些接口的实现类和操作它们的算法。... 集合容器因为内部的数据结构...Collection是一次添加一个元素。  iterator是迭代获取元素 第一大类...
  • Object put(Object key,Object vaule):向Map中添加一个元素 Object remove(Object key):按照指定的key删除此key-value void putAll(Map t) void clear():清空 元素查询的操作: Object get(Object key):获取指定...
  • 第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 ...
  • 第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对数据额结构成熟的实现 三个接口Collection;Map;Iterator Collection 存储单个数据的顶级接口 ...linked list,由一系列结点node(链表一个元素称为结点)组成 class Node{ Object data; No
  • 我将使用TreeMap的接口,但是它应该具有类似于c的std :: map的实现(它仅在更新过程维护对第一个和最后一个元素的迭代器).第一地图将是地图.任务,第二个-Map< Priority,Integer>.优先事项.每个现有优先级值...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 144
精华内容 57
关键字:

java获取map中第一个元素

java 订阅