gpt4 book ai didi

java - 如何在 HashMap 中添加和获取类的对象值

转载 作者:行者123 更新时间:2023-11-29 21:16:25 26 4
gpt4 key购买 nike

我想创建一个方法来将数据添加到 sqlite 中数据库取 HashMap<String,Person>作为类中的参数。

在另一个类(class),我想在 HashMap<String,Person> 中添加人员详细信息我的数据库处理程序类可以使用它。

为此我进行了很多搜索并尝试了很多示例,但无法找到解决方案。现在我有点困惑该怎么做。

我现在按照以下方式执行此操作,并获得 ClassCastException .

类 1:PersonDataSource.java

public long createContact(HashMap<String, Contact> queryValues) {
ContentValues values = new ContentValues();
Contact val = Contact.class.cast(queryValues);

values.put( MySQLiteHelper.COLUMN_FIRST_NAME, val.getFirstName());
values.put( MySQLiteHelper.COLUMN_LAST_NAME, val.getLastName());
values.put( MySQLiteHelper.COLUMN_NICK_NAME, val.getNickName());
values.put( MySQLiteHelper.COLUMN_BIRTHDATE, val.getBirthDate());
values.put( MySQLiteHelper.COLUMN_PRIMARY_CONTACT, val.getPrimaryContact());

long insertId = database.insert(MySQLiteHelper.TABLE_NAME, null, values);
return insertId;
}

然后形成另一个类:

datasource = new ContactDataSource(this);
datasource.open();

Cursor phones = getContentResolver().query(Phone.CONTENT_URI, PROJECTION,null,null, Phone.DISPLAY_NAME);
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(Phone.NUMBER));

Person data = new Person();
data.setNickName(name);
data.setPrimaryContact(phoneNumber);

HashMap<String, Person> map = new HashMap<String, Person>();
map.put("data", data);

long id = datasource.createContact(map);

Log.e(CLASS_NAME, "Contact id :" + String.valueOf(id));
}
phones.close();
datasource.close();

我该如何解决这个问题?

最佳答案

使用

Contact val = (Contact) queryValues.get("data"); 

代替

Contact val = Contact.class.cast(queryValues); 

这是因为,您正试图将单个联系人作为 map.put("data", data); 放入 map 中,因此当您阅读此条目时,您需要使用 map.get("data") 因为这里的键是data

关于java - 如何在 HashMap 中添加和获取类的对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21325983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com