加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

一个keySet上的Java迭代

发布时间:2020-12-14 16:35:11 所属栏目:Java 来源:网络整理
导读:我有以下 Java代码: public void myMethod (final Map pFeatureGroupsFromPackage) { final SetString keys = pFeatureGroupsFromPackage.keySet(); for (final String key : keys) { tmpList = (ListFeatureKey) pFeatureGroupsFromPackage.get(key); // d
我有以下 Java代码:
public void myMethod (final Map pFeatureGroupsFromPackage) {

   final Set<String> keys = pFeatureGroupsFromPackage.keySet();

   for (final String key : keys) {
           tmpList = (List<FeatureKey>) pFeatureGroupsFromPackage.get(key);
    // do whatever
   }
}

我从“findBugs”得到警告,告诉以下内容:

方法myMethod无效的使用keySet迭代器而不是entrySet迭代器.
该警告在tmpList对齐处完成.

我不明白为什么这是低效的.实际上keylist只计算一次.
任何意见?谢谢.

解决方法

而不是迭代keySet并调用get获取每个键的对应值,迭代entrySet:
final Set<Map.Entry<String,List<FeatureKey>>> entries = pFeatureGroupsFromPackage.entrySet();

for (Map.Entry<String,List<FeatureKey>> entry : entries) {
    String key = entry.getKey();
    List<FeatureKey> tmpList = entry.getValue();

    // do whatever
}

这样你就不需要在地图上查找每个键;你直接得到钥匙和价值一次.

另外,使用类型参数声明您的Map:

public void myMethod (final Map<String,List<FeatureKey>> pFeatureGroupsFromPackage) {
    // ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读