通过位置或索引从Android中的HashMap获取密钥

Dan*_*alo 11 java android hashmap

我有:

public static HashMap<String, String> CHILD_NAME_DOB = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

假设值为CHILD_NAME_DOB:

<adam,15121990>
<roy,01051995>
<neha,05091992>
<alisha,11051992>
Run Code Online (Sandbox Code Playgroud)

我试图从中获取最后一个关键元素CHILD_NAME_DOB.也就是说,我想alisha从上面的例子中获取密钥到临时String name.

另外我想知道如何通过索引获取数据.

例如:如果int index = 2,我想关键"Neha"String name

TIA.

编辑:DateOfBirth值(值数据输入CHILD_NAME_DOB)是动态的,未知.所以这个链接不是我想要的.

abe*_*far 5

单线解决方案:

首先请注意,JavaHashMap不保证条目的顺序。因此,每次迭代 HashMap 时,条目都会出现在不同的位置。您将需要LinkedHashMap保证可预测的迭代顺序。

Map<String, String> CHILD_NAME_DOB = new LinkedHashMap<>();
Run Code Online (Sandbox Code Playgroud)

通过索引获取key:

key = (new ArrayList<>(CHILD_NAME_DOB.keySet())).get(index)
Run Code Online (Sandbox Code Playgroud)

通过索引获取值:

CHILD_NAME_DOB.get(key)
Run Code Online (Sandbox Code Playgroud)


Dan*_*alo 4

感谢@Pentium10 的回答。 我根据自己的需要稍微修改了一下。

String key="default";
Iterator myVeryOwnIterator = CHILD_NAME_DOB.keySet().iterator();
while(myVeryOwnIterator.hasNext()) {
     key=(String)myVeryOwnIterator.next();
     //String value=(String)meMap.get(key);
     }
Toast.makeText(viewEnterChildExp.getContext(), "Key: "+key , Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

我由此得到了最后一个关键要素。

一旦我找到一种按索引键的简单方法,我就会立即更新。