Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Bundle迭代器,用于放置和删除条目_Java_Android_Iterator_Bundle - Fatal编程技术网

Java Android Bundle迭代器,用于放置和删除条目

Java Android Bundle迭代器,用于放置和删除条目,java,android,iterator,bundle,Java,Android,Iterator,Bundle,我正在寻找一种方法来迭代对象中包含的条目。目前,我对每种方法都错误地使用了: for (String key : bundle.keySet()) { if ("videourl".equals(key.toLowerCase()) || "priority".equals(key.toLowerCase())) { // Save value to bundle using lowercase key value extras.putString(key

我正在寻找一种方法来迭代对象中包含的条目。目前,我对每种方法都错误地使用了:

for (String key : bundle.keySet()) {
    if ("videourl".equals(key.toLowerCase()) || "priority".equals(key.toLowerCase())) {
        // Save value to bundle using lowercase key value
        extras.putString(key.toLowerCase(), (String) extras.get(key));
        // Remove original version of this bundle entry
        extras.remove(key);
    }
}
上述方法的问题在于,它可能会在未来的不确定时间出现任意的、不确定的行为

我见过映射对象的迭代器实现(例如):

for(Iterator it=map.entrySet().Iterator();it.hasNext();){
Map.Entry=it.next();
if(entry.getKey().equals(“test”)){
it.remove();
}
}
但是,我不能直接访问Bundle的条目,因此不能使用相同的方法


请告诉我迭代器是否可以用于捆绑包对象,或者请建议其他方法。

不幸的是,我无法找到使用迭代器向捆绑包添加和删除条目的方法。我的解决方法是将要添加的条目保存到临时Bundle对象中,并将要删除的条目的原始键名保存到列表中。请参阅下面的代码:

// Loop through all messages and change the extras' key names to lowercase (only for keys of interest)
Bundle tempBundle = new Bundle();
ArrayList<String> keysToBeRemoved = new ArrayList<>();
Bundle extras = messages.get(i).getExtras();

for (String key : extras.keySet()) {
    // Check if key is not all lower case and if it is a key of interest
    if (!key.equals(key.toLowerCase()) && isKeyOfInterest(key)) {
        // Save value to bundle using lowercase key value
        tempBundle.putString(key.toLowerCase(), extras.getString(key));
        // Add original version of this key to a list for later deletion
        keysToBeRemoved.add(key);
    }
}

// Remove original entries from message extras
for (String originalKey : keysToBeRemoved) {
    extras.remove(originalKey);
}

// Add all new bundle entries to message extras
extras.putAll(tempBundle);
//循环浏览所有消息,并将附加项的键名更改为小写(仅适用于感兴趣的键)
Bundle tempBundle=新Bundle();
ArrayList keystereMoved=新建ArrayList();
Bundle extras=messages.get(i).getExtras();
for(字符串键:extras.keySet()){
//检查键是否不全是小写,以及它是否是感兴趣的键
if(!key.equals(key.toLowerCase())&&isKeyOfInterest(key)){
//使用小写键值将值保存到绑定
putString(key.toLowerCase(),extras.getString(key));
//将此密钥的原始版本添加到列表中,以便以后删除
keysteberemoved.add(key);
}
}
//从邮件附加中删除原始条目
for(字符串originalKey:keysteberemoved){
移除附加组件(原alkey);
}
//将所有新捆绑条目添加到消息附加中
附加putAll(临时捆绑);
不过,如果有人知道如何使用迭代器和包,我很想知道

// Loop through all messages and change the extras' key names to lowercase (only for keys of interest)
Bundle tempBundle = new Bundle();
ArrayList<String> keysToBeRemoved = new ArrayList<>();
Bundle extras = messages.get(i).getExtras();

for (String key : extras.keySet()) {
    // Check if key is not all lower case and if it is a key of interest
    if (!key.equals(key.toLowerCase()) && isKeyOfInterest(key)) {
        // Save value to bundle using lowercase key value
        tempBundle.putString(key.toLowerCase(), extras.getString(key));
        // Add original version of this key to a list for later deletion
        keysToBeRemoved.add(key);
    }
}

// Remove original entries from message extras
for (String originalKey : keysToBeRemoved) {
    extras.remove(originalKey);
}

// Add all new bundle entries to message extras
extras.putAll(tempBundle);