Java 如何在不使用迭代器或集合的情况下迭代映射?
在Java中,我试图在映射上迭代,以从Java 如何在不使用迭代器或集合的情况下迭代映射?,java,collections,interface,map,Java,Collections,Interface,Map,在Java中,我试图在映射上迭代,以从map接口完成putAll()方法的实现。但是,我不能使用keyset(),entryset()或values()来执行此操作,这意味着我不能为此调用迭代器 我被难住了,不知道如何在没有迭代器的情况下进行 Map mp = new HashMap(); Set s = mp.keySet(); Iterator itr = s.iterator(); while(itr.hasNext()) {
map
接口完成putAll()
方法的实现。但是,我不能使用keyset()
,entryset()
或values()
来执行此操作,这意味着我不能为此调用迭代器
我被难住了,不知道如何在没有迭代器的情况下进行
Map mp = new HashMap();
Set s = mp.keySet();
Iterator itr = s.iterator();
while(itr.hasNext())
{
Object value = mp.get(itr.next());
}
编辑:
我的工作就是在不使用这三种方法的情况下实现所有Map方法。如何在没有迭代器的情况下实现像putAll()
这样的方法让我感到困惑
Map mp = new HashMap();
Set s = mp.keySet();
Iterator itr = s.iterator();
while(itr.hasNext())
{
Object value = mp.get(itr.next());
}
我不知道你为什么不能用它。实现是在上面的代码中完成的
我不知道你为什么不能用它。实现是在上面的代码中完成的。如果
Map
是SortedMap
,则可以执行以下操作:
SortedMap<K, V> partialMap = wholeMap;
while (!partialMap.isEmpty()) {
K key = partialMap./* left as an exercise to the reader */;
partialMap = partialMap.tailMap(
key,
false // exclusive, so does not include key
);
}
SortedMap partialMap=wholeMap;
而(!partialMap.isEmpty()){
K键=partialMap./*留给读者作为练习*;
partialMap=partialMap.tailMap(
钥匙
false//独占,因此不包括密钥
);
}
您可以在中找到
tailMap
的说明。如果Map
是SortedMap
,则可以执行以下操作:
SortedMap<K, V> partialMap = wholeMap;
while (!partialMap.isEmpty()) {
K key = partialMap./* left as an exercise to the reader */;
partialMap = partialMap.tailMap(
key,
false // exclusive, so does not include key
);
}
SortedMap partialMap=wholeMap;
而(!partialMap.isEmpty()){
K键=partialMap./*留给读者作为练习*;
partialMap=partialMap.tailMap(
钥匙
false//独占,因此不包括密钥
);
}
您可以在HashMap代码的。中找到尾图的解释:
for (Iterator<? extends Map.Entry<? extends K, ? extends V>> i = m.entrySet().iterator(); i.hasNext(); ) {
Map.Entry<? extends K, ? extends V> e = i.next();
put(e.getKey(), e.getValue());
}
for(迭代器来自HashMap代码:
for (Iterator<? extends Map.Entry<? extends K, ? extends V>> i = m.entrySet().iterator(); i.hasNext(); ) {
Map.Entry<? extends K, ? extends V> e = i.next();
put(e.getKey(), e.getValue());
}
for(迭代器)为什么你不能使用这些方法中的任何一种?是你的老师不允许你这么做的吗?keySet()
,entrySet()
和values()
是在事先不知道键的情况下访问内容的唯一方法。或者这是一个诡计问题(回答:你不能)或者你还没有提供一些其他信息。另外,你应该添加标签。-除了你在Map
界面中提到的方法之外,没有其他方法可以迭代。你确定你没有误解你的任务吗?@so1201431嘲讽性?你在没有作业的情况下发布这样的问题是不礼貌的ag.为什么你不能使用这些方法中的任何一种?是你的老师不允许你使用的吗?keySet()
,entrySet()
和values()
是在事先不知道键的情况下访问内容的唯一方法。这是一个诡计问题(回答:你不能)或者你还没有提供一些其他信息。另外,你应该添加标签。-除了你在Map
界面中提到的方法之外,没有其他方法可以迭代。你确定你没有误解你的任务吗?@so1201431嘲讽性?你在没有作业的情况下发布这样的问题是不礼貌的ag.-1违反了问题中的明确限制。也没有泛型:(-1)违反了问题中的明确限制。也没有泛型:-(