android中有类似NSDictionary的东西吗?

Posted

技术标签:

【中文标题】android中有类似NSDictionary的东西吗?【英文标题】:Is there anything like NSDictionary in android? 【发布时间】:2012-08-03 13:36:03 【问题描述】:

我是 android 新手。我确实四处搜索,但在 Android 中找不到像 ios 的 NSdictionary 这样的工作。例如在 iOS 中,我可以创建 SIMPLE 像这种格式的字典数组

Array
   idx1: [objA1 for keyA],[objB1 for keyB],[objB1 for keyC]
   idx2: [objA2 for keyA],[objB2 for keyB],[objB2 for keyC]
   idx3: [objA3 for keyA],[objB3 for keyB],[objB3 for keyC]

我知道我可以创建与 android 中类似的字符串数组

<string-array name="list_obj1">
    <item>ObjA1</item>
    <item>ObjB2</item>
    <item>ObjC3</item>
</string-array>
<string-array name="list_obj2">
    <item>ObjB1</item>
    <item>ObjB2</item>
    <item>ObjB3</item>
</string-array>
<string-array name="list_obj3">
    <item>ObjC1</item>
    <item>ObjC2</item>
    <item>ObjC3</item>
</string-array>

我的问题是,是否还有其他方法可以在 Android 中创建 AN 字典数组,例如 iOS。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

首先,我认为有很多关于这些东西的教程,然后你可以搜索更多信息。 由于您是 android 新手,您可能不知道要搜索的“名称”。对于这种情况,“HashMap”就是您要寻找的。它像 NSDictionary 一样工作。

//Create a HashMap
Map <String,String> map =  new HashMap<String,String>();
//Put data into the HashMap
map.put("key1","Obj1");
map.put("key2","Obj2");
map.put("key3","Obj3");

// Now create an ArrayList of HashMaps
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

//Add the HashMap to the ArrayList
mylist.add(map);

现在你有了像字典数组一样的 st。

希望对您有所帮助。

【讨论】:

感谢您的快速回答,但您的回答仅用于创建字典。我正在寻找一个字典数组。请帮忙! 谢谢。这就是我要找的。谢谢。【参考方案2】:

您可以将@user1139699 所说的内容放入一个ArrayList。

ArrayList<HashMap> list = new ArrayList();

Map <String, String> map =  new HashMap<String,String>();
map.put("key","Obj");

list.add(map);

【讨论】:

感谢您的回答。 @user1139699 的答案是我在这种情况下寻找的答案。【参考方案3】:

如果你想加载这样的文件:

property.key.1=value of 1st key
property.key.2=value of 2nd key
prompt.alert = alert 

等你可以使用 java Properties();然后你可以立即得到每个键的值。



解释:

例如,您有一个文件 myTranslations.txt 。在该文件中,您可以按以下格式编写键/值对:

property.key.1=value of 1st key
property.key.2=value of 2nd key
prompt.alert = alert 

“=”之前的部分是键,“=”之后的部分是值。

然后在您的代码中执行以下操作:

Properties properties = new Properties();

    File propertiesFile = new File (filePath);
    FileInputStream inputStream = null;
    try 
        inputStream = new FileInputStream(propertiesFile);
        properties.load(inputStream);
     catch (IOException ioe) 
        ioe.printStackTrace();
    

filePath 是上面文件的路径。

那么你可以得到每个键的值为:

properties.get("prompt.alert")

将返回字符串:

alert

因为它在 txt 文件中。

如果有帮助请点赞。

【讨论】:

你能解释一下吗?

以上是关于android中有类似NSDictionary的东西吗?的主要内容,如果未能解决你的问题,请参考以下文章

在Oracle 中有类似 sqlserver 中的unicode 的函数吗

通过过滤另一个 NSDictionary 来获取一个 NSDictionary

IOS开发-ObjC-NSDictionary

NSDictionary 和 JSON 值

使用谓词过滤 NSDictionary

NSDictionary - 从返回的 JSON 服务中解析项目