我想从数据库(Firebase)中读取一个名为map
的映射并将其与另一个映射motcle
进行比较,如果找到重复的键,则会增加map
中该键的值,但是我遇到了一个ClassCastException
异常。
以下是代码:
public void addMotcle(final Map motcle, String Userid)
{
mDatabase = FirebaseDatabase.getInstance().getReference("User");
DatabaseReference user = mDatabase.child(Userid);
final DatabaseReference keylist = user.child("motcle");
keylist.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
{
//I tried to put the map in another map and change it but
//It is still the same error
Map<String,Integer> map = (Map) dataSnapshot.getValue();
Map<String,Integer>Hmap= new HashMap<>();
Hmap.putAll(map);
//if there is duplicate we incremente les mots clé
for (Object key : motcle.keySet()) {
if (Hmap.containsKey(key)) {
Hmap.put((String)key,((Integer) Hmap.get(key))+1);
}
else
{
Hmap.put((String) key,1);
}
}
keylist.setValue(Hmap);
}
else
{
keylist.setValue(motcle);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
错误出现在这一行:map.put((String)key,map.get(key)+1);
如果我将map
声明为Map<String,Integer>
,为什么不能在值中写入一个Integer
?
new Integer(result_int)
。 - Red Boymap.put((String) key, ((Integer) map.get(key)) + 1);
吗? - Youcef LAIDANImap.put((String)key,((Integer) map.get(key))+1);
,仍然会出现相同的错误。 - Anis Kaloun