如何在安卓中使用字典(类似于iPhone的NSDictionary)?

34

我曾从事过SOAP消息的工作,需要解析来自Web服务的值,并将这些值存储在ArrayList中。

例如: 值为员工姓名(Siva)和员工ID(3433fd),这两个值存储在ArrayList中,但我想将它们存储在字典中,如何实现?

4个回答

82

您可以像这样使用HashMap

Map <String,String> map =  new HashMap<String,String>();
//add items 
map.put("3433fd","Siva");
//get items 

String employeeName =(String) map.get("3433fd");

这是您要寻找的吗? - confucius
这也类似于(iPhone词典)。 - Sampath Kumar
1
我相信在map对象中添加键值对的方法是'put',而不是'add'。 - Conor Patrick

11
你可以使用Bundle,因为它可以将字符串转换成各种类型的映射。
Bundle b = new Bundle();
b.putInt("identifier", 121);
b.putString("identifier", "Any String");
b.putStringArray("identifier", stringArray);

int i = b.getInt("identifier");
...

谢谢。很多答案都指向哈希映射,但实际上我认为Bundle更类似于字典,因为它允许更多类型的变量。 - Shayno

6
 public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        EditText textview = (EditText) findViewById(R.id.editTextHash);
        EditText textviewNew = (EditText) findViewById(R.id.editTextHash2);

        Map<String, String> map = new HashMap<String,String>();
        map.put("iOS", "100");
        map.put("Android", "101");
        map.put("Java", "102");
        map.put(".Net", "103");

        String TextString = "";
       // Set<E> keys = map.keySet();

       Set keys = map.keySet();
       System.out.println("keys "+keys);
        for (Iterator i = keys.iterator(); i.hasNext();) 
        {
            String key = (String) i.next();
            System.out.println("key "+key);
            String value = (String) map.get(key);
            System.out.println("value "+value);
            textview.append(key + " = " + value);
            TextString+=(key + " = " + value); 
        }
        //textviewNew.setText(TextString);

//        Iterator iterator = map.keySet().iterator();
//        
//        while (iterator.hasNext()) 
//        {
//          String object = (String) iterator.next();
//          textview.setText(object);
//      }
//        
//        //textview.setText(map.get("Siva"));
//        
//        System.out.println(map);

    }
}

2

字典(Dictionary)是一种将键映射到值的抽象类。在 Android 中,有一个 Dictionary 类,具体请参考链接中“类概述”部分的说明。

由于它已经过时,请不要再使用此类。新实现应该使用 Map 接口。

往 Dictionary 类中插入空键或空值会导致 NullPointerException 异常。但你可以使用Map接口,它提供了与字典完全相同的功能。你可以像下面这样使用:

//put values
Map Message = new HashMap();
Message.put("title", "Test message");
Message.put("description", "message description");
Message.put("email", "email@gmail.com");
//get values
Log.d("get Message","Message title -"+Message.get("title"));

您可以像下面这样使用自定义类。
public class MessageObject {
    String title;
    String description;
    String email;
}

你可以使用Getter和Setter来获取和设置值,不需要每次都记住键名,这样可能会带来其他一些优势。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接