当前位置: 首页 > 知识库问答 >
问题:

如何获取Linkedhashmap的第一个值,即字符串和节点

南门烈
2023-03-14

我想知道一张linkedhashmap的名字,但只知道最后一张。

这是我的hashmap,我只打印出姓氏。我如何得到第一个?有没有办法把它链接到密钥上。例如,“gumt”打印出Gumtäktsuni.bibliotek?

LinkedHashMap<String,Node> nodes = new LinkedHashMap<>();

nodes.put("gumt", new Node("Gumtäkts uni.bibliotek   ", 60.2039, 24.9638));
nodes.put("lill", new Node("Lillhoplax bibliotek     ", 60.2008, 24.8954));
nodes.put("bush", new Node("Busholmens bibliotek     ", 60.1593, 24.9207));

for (String key : nodes.keySet()) {

           
           nodes.get(key).setKey(key);

           System.out.println("[" + key + "]" + " " + nodes.get(key).getName());
}
return nodes;

输出:

[gumt] Busholmens bibliotek     
[lill] Busholmens bibliotek 
[bush] Busholmens bibliotek

我也有一个生效的节点类。节点类:

import java.util.ArrayList;

public class Node{

    private static String name;
    private static String key;
    private double latitude;
    private double longitude;
    private static ArrayList<Node> neighbours;

    public Node(String name, double latitude, double longitude) {


        this.name = name;
        this.key = key;
        this.latitude = latitude;
        this.longitude = longitude;
        this.neighbours = neighbours;
    }

    public static String getName() {

        return name;
        }

    public static String getKey(){

        return key;
    }

    public void setName(String name){

        this.name = name;
    }

    public void setKey(String name){

        this.key = key;
    }

    public void addNeighbour(Node neighbour){

        this.neighbours = neighbours;
    }

    public static ArrayList<Node> getNeighbours(){

        return neighbours;
    }

    }



共有3个答案

牛景同
2023-03-14
System.out.println("[" + key + "]" + " " + nodes.get(key).getName())

在这一行中,您试图打印与键链接的值。但是,类节点中的getName()函数只返回节点的name属性,在您的情况下,该属性总是相同的,因为在类节点中,字段名称被定义为静态的

柴衡
2023-03-14

可以创建第二个关联映射来跟踪插入的元素的顺序。

public class TestFirst {

    public static void main(String[] args)
    {
        Main m = new TestFirst().new Main();
        System.out.println(m.nodes.get(m.map.get(1)));
        System.out.println(m.nodes.get(m.map.get(3)));
    }
    
    class Main
    {
        int counter=0;
        LinkedHashMap<String,Node> nodes = new LinkedHashMap<>();
        Map <Integer, String> map = new HashMap<>();
        Main()
        {
            nodes.put("gumt", new Node("Gumtäkts uni.bibliotek   ", 60.2039, 24.9638));
            map.put(incCounter(), "gumt");
            nodes.put("lill", new Node("Lillhoplax bibliotek     ", 60.2008, 24.8954));
            map.put(incCounter(), "lill");
            nodes.put("bush", new Node("Busholmens bibliotek     ", 60.1593, 24.9207));
            map.put(incCounter(),"bush");
        }
        public int incCounter()
        {
            return ++counter;
        }
        class Node
        {
            private String name;
            private String key;
            private double latitude;
            private double longitude;
            private ArrayList<Node> neighbours;

            public Node(String name, double latitude, double longitude) {


                this.name = name;
                this.key = key;
                this.latitude = latitude;
                this.longitude = longitude;
                this.neighbours = neighbours;
            }

            public String toString()
            {
                return name+"("+latitude+","+longitude+")";
            }
            public String getName() {
                return name;
                }
            
            public String getKey(){
                return key;
            }

            public void setName(String name){
                this.name = name;
            }

            public void setKey(String name){
                this.key = key;
            }

            public void addNeighbour(Node neighbour){
                this.neighbours = neighbours;
            }

            public ArrayList<Node> getNeighbours(){
                return neighbours;
            }

          }

    }
}

输出:

Gumtäkts uni.bibliotek   (60.2039,24.9638)
Busholmens bibliotek     (60.1593,24.9207)

注意:也检查修饰符:静态

卫昊东
2023-03-14

尝试使用entrySet()而不是keySet()

for (Map.Entry<String, Node> entry : nodes.entrySet()) {
    String key = entry.getKey();
    Node node = entry.getValue();
    System.out.println("[" + key + "] " + node.getName());
}
 类似资料:
  • 如何获取字符串的第一个字符? 第一个字符=“s”

  • 问题内容: 假设我在php中有一个字符串,它会输出到这样的文本文件中: nÖ§9q1Fª£ 如何将其字节码而不是时髦的ascii字符保存到我的文本文件中? 问题答案: 使用ord函数 http://ca.php.net/ord 例如。

  • 问题内容: 如何从Python列表中的第一个字符串中获取第一个字符? 看来我可以使用,但不会给我第一个字符。 问题答案: 你几乎是对的。最简单的方法是 但 也可以。 你想 结束 的第一个字符(字符零)后,未 启动 的第一个字符(字符零),这是以后有什么在你的问题的手段的代码。

  • 问题内容: 我需要获取字符串中第一个字母的位置。 遵循一个基本示例。第一个字母是,所以我需要知道的位置,因为我可以使用。 我想用正则表达式得到第一个字母,而不是添加硬编码的字母()。 提前致谢。 问题答案: 如果我正确阅读了Java文档,则说明您正在寻找match对象的方法:

  • 示例PRUNKR:https://plnkr.co/edit/NZwb3ol8CbZFtSc6Q9zm?p=preview 我知道RxJS(5.0 beta.4)有以下3种节流方法: ,和 我正在寻找的行为是默认情况下在上执行的行为: 理论上,这应该看起来像: 但是 如果在节流超时时发出,则从不给我最后一个值 我可以结合任何RxJS方法来实现所描述的行为吗?

  • 问题内容: 我有 使用JavaScript,如何获得最后五个字符或最后一个字符? 问题答案: 不要使用。请使用此方法,因为它与跨浏览器兼容(请参阅IE)。