Java中如何从HashMap中获取键位置
我怎样才能得到地图上的关键位置?我怎样才能知道“奥迪”和“宝马”在哪个位置Java中如何从HashMap中获取键位置,java,Java,我怎样才能得到地图上的关键位置?我怎样才能知道“奥迪”和“宝马”在哪个位置 Map Map=newhashmap(); 地图放置(“奥迪”,3); 地图放置(“宝马”,5); 你不能。从: 基于哈希表的映射接口实现。这个实现提供了所有可选的映射操作,并允许空值和空键。(HashMap类大致相当于Hashtable,只是它不同步并且允许空值。)该类不保证映射的顺序;特别是,它不能保证订单在一段时间内保持不变 因此,迭代之间的顺序可能会有所不同。如果您需要保留订单,可以查看LinkedHashMap
Map Map=newhashmap();
地图放置(“奥迪”,3);
地图放置(“宝马”,5);
你不能。从:
基于哈希表的映射接口实现。这个实现提供了所有可选的映射操作,并允许空值和空键。(HashMap类大致相当于Hashtable,只是它不同步并且允许空值。)该类不保证映射的顺序;特别是,它不能保证订单在一段时间内保持不变
因此,迭代之间的顺序可能会有所不同。如果您需要保留订单,可以查看LinkedHashMap
从:
哈希表和链表实现的映射接口,具有可预测的迭代顺序。此实现与HashMap的不同之处在于,它维护一个贯穿其所有条目的双链接列表。此链表定义了迭代顺序,通常是将关键帧插入贴图的顺序(插入顺序)
因此,要找到关键点位置,基本上需要迭代关键点并计算要搜索的关键点的位置
另一方面,IMO这可能不是
Map
数据类型的最佳使用。我认为如果你真的需要这个位置,你应该使用某种类型的列表(例如ArrayList
),它实际上保留了顺序,你可以使用get
方法来检索某个索引的元素 你不能。Map和HashMap上的键没有顺序。您需要使用一个保持顺序的结构,例如
请注意,LinkedHashMap不提供按位置获取键的方法,因此这仅适用于使用迭代器的情况
另一种方法是创建从关键点映射到整数位置的第二个贴图,并在继续操作时添加到其中:
Map<String, Integer> indexMap = new HashMap<String, Integer>();
indexMap.put("Audi", 0);
indexMap.put("BMW", 1);
Map indexMap=newhashmap();
indexMap.put(“奥迪”,0);
indexMap.put(“宝马”,1);
对于更优雅的解决方案,您可能需要提供更多关于您正在做什么的信息。因为其他答案说明您需要使用类似于java.util.LinkedHashMap的结构。LinkedHashMap使用LinkedEntrySet
在内部维护其键,这并不正式提供顺序,而是按照使用的插入顺序进行迭代
如果将Map.keySet()
传递到列表实现中,则可以使用List.indexOf(Object)
方法,而无需在其他答案中写入任何额外的代码
Map<String, Integer> map = new LinkedHashMap<String, Integer>();
map.put("Audi", 3);
map.put("BMW", 5);
map.put("Vauxhall", 7);
List<String> indexes = new ArrayList<String>(map.keySet()); // <== Set to List
// BOOM !
System.out.println(indexes.indexOf("Audi")); // ==> 0
System.out.println(indexes.indexOf("BMW")); // ==> 1
System.out.println(indexes.indexOf("Vauxhall")); // ==> 2
Map Map=newlinkedhashmap();
地图放置(“奥迪”,3);
地图放置(“宝马”,5);
地图放置(“沃克斯霍尔”,7);
列表索引=新的ArrayList(map.keySet());//0
System.out.println(index.indexOf(“BMW”);//=>1.
System.out.println(index.indexOf(“Vauxhall”);//=>2.
你所说的职位是什么意思?谢谢。我看了看这里:但是嗯。。。它没有告诉我如何得到元素的位置。你能给我举个小例子吗?我有两个文件。其中一个有名字,另一个有数字。这些线是相关的。如果我在第一个文件的第一行有“John”,在另一个文件的第一行有“1000”,这意味着John有1000美元。我想以某种方式将它们链接起来,以便根据数字对它们进行排序。
Map<String, Integer> map = new LinkedHashMap<String, Integer>();
map.put("Audi", 3);
map.put("BMW", 5);
map.put("Vauxhall", 7);
List<String> indexes = new ArrayList<String>(map.keySet()); // <== Set to List
// BOOM !
System.out.println(indexes.indexOf("Audi")); // ==> 0
System.out.println(indexes.indexOf("BMW")); // ==> 1
System.out.println(indexes.indexOf("Vauxhall")); // ==> 2