标签: keyset

java集合 - mapset中的keyset()vs entrySet()

我把一个字符串数组元素是一个映射,其中字符串数组的元素是键,字的频率是值,例如:

String[] args = {"if","it","is","to","be","it","is","up","me","to","delegate"};
Run Code Online (Sandbox Code Playgroud)

然后地图会有像这样的条目 [ if:1, it:2 .... ]

Set<String> keys = m.keySet();
System.out.println("keyset of the map : "+keys);
Run Code Online (Sandbox Code Playgroud)

打印所有键: "if","it","is","to","be","it","is","up","me","to","delegate"

Set<Map.Entry<String, Integer>> entrySet = m.entrySet();
Iterator<Map.Entry<String, Integer>> i = entrySet.iterator();
while(i.hasNext()){
    Map.Entry<String, Integer> element = i.next();
    System.out.println("Key: "+element.getKey()+" ,value: "+element.getValue());
}
Run Code Online (Sandbox Code Playgroud)

打印所有键值对:

使用条目集打印所有值:

Key: if ,value: 1
Key: it ,value: 2
Key: is ,value: 2
Key: to ,value: 2
Key: be ,value: 1
Key: up ,value: 1
Key: me ,value: 1
Key: delegate ,value: 1
Run Code Online (Sandbox Code Playgroud)

但是下面的代码块应该打印与上面完全相同的输出,但它不会:

Iterator<String> …
Run Code Online (Sandbox Code Playgroud)

java collections hashmap linkedhashmap keyset

34
推荐指数
1
解决办法
11万
查看次数

lua:检索表中的键列表

我需要知道如何在lua中检索表的键集.例如,如果我有下表:

tab = {}
tab[1]='a'
tab[2]='b'
tab[5]='e'
Run Code Online (Sandbox Code Playgroud)

我想要检索一个如下所示的表:

keyset = {1,2,5}
Run Code Online (Sandbox Code Playgroud)

lua keyset lua-table

33
推荐指数
2
解决办法
5万
查看次数

密钥集上的Java迭代

我有以下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
   }
}
Run Code Online (Sandbox Code Playgroud)

我收到"findBugs"的警告,告诉您:

方法myMethod使得无效地使用keySet迭代器而不是entrySet迭代器.警告在tmpList作业完成.

我不明白为什么这样效率低下.事实上,keys列表只计算一次.任何意见?谢谢.

java iteration optimization keyset

13
推荐指数
2
解决办法
4万
查看次数

避免使用map.get(key)方法

我有以下代码,但我看到在迭代地图键时从地图检索值keySet()是一个错误,即使使用findBugs我得到警告WMI_WRONG_MAP_ITERATOR

for(String elementId : mapElements.keySet()){

     element = mapElements.get(elementId); 

     doSomething(element);
}
Run Code Online (Sandbox Code Playgroud)

那么为什么这不好,我该如何解决呢?

谢谢.

java keyset

11
推荐指数
1
解决办法
4096
查看次数

WeakHashMap的keySet条目永远不会为空吗?

如果我遍历WeakHashMap的密钥集,我是否需要检查空值?

WeakHashMap<MyObject, WeakReference<MyObject>> hm
    = new WeakHashMap<MyObject, WeakReference<MyObject>>();

for ( MyObject item : hm.keySet() ) {
    if ( item != null ) { // <- Is this test necessary?
        // Do something...
    } 
}
Run Code Online (Sandbox Code Playgroud)

换句话说,当我迭代它们时,是否可以收集WeakHashMap的元素?

编辑

为了这个问题,可以假设null在哈希映射中没有添加任何条目.

java iteration null weakhashmap keyset

9
推荐指数
2
解决办法
2252
查看次数

Map <K,V> .keySet()不支持add/addAll操作

关于Map<K,V>界面:

为什么keySet()返回Set支持remove操作但不支持add()addAll()操作?

java dictionary set keyset unsupportedoperation

7
推荐指数
1
解决办法
955
查看次数

HashMap 中的 keySet() 方法可能更简洁

Mac OS 上的 JDK 8,查看 HashMap.java 中的以下代码:

    public Set<K> keySet() {
        Set<K> ks = keySet;
        if (ks == null) {
            ks = new KeySet();
            keySet = ks;
        }
        return ks;
    }
Run Code Online (Sandbox Code Playgroud)

对返回的 ks 的任何更改都将反映在 keySet 中,因为它们始终指向相同的底层集合,如果这是真的,可以写成:

    public Set<K> keySet() {
        if (keySet == null) {
            keySet = new KeySet();
        }
        return keySet;
    }
Run Code Online (Sandbox Code Playgroud)

两个代码片段的行为是否相同?

如果是这样,为什么HashMap使用第一个变体而不是第二个变体?

java hashmap keyset java-8

6
推荐指数
1
解决办法
132
查看次数

JSONObject keySet() 函数不存在吗?

很困惑。新建项目,添加以下代码:

import org.json.JSONObject;

JSONObject jsonObject = new JSONObject();
jsonObject.keys();
jsonObject.keySet();
Run Code Online (Sandbox Code Playgroud)

.keys()方法按其应有的方式解析。

.keySet()方法突出显示红色,AndroidStudio 给出“无法解析方法 keyset()”错误。

如果我转到keys()定义,这里它们都是公开的:http://goloskok.com/u/2015-07-01_16-41-08.jpg

我究竟做错了什么?

java android json keyset missingmethod

5
推荐指数
1
解决办法
3860
查看次数

如何使用 keySet() 检索 HashMap 中的一组键,遍历它并找到每个键的计数?

我的任务即将结束,我被指示要做的最后一件事是:

  • 使用 keySet() 检索键集(映射的 String 部分)。循环遍历这个集合并打印出单词及其计数。

我已经使用 keySet() 方法打印出我的 HashMap 中的键数,但我还没有做的是找到 HashMap 中每个单词的长度,然后打印出每个单词中的字符数。我目前不确定我应该如何做到这一点。我假设我会使用一段时间的 for 循环来遍历我已经完成的 keySet(),然后使用类似 .length() 的方法来找出每个单词的长度,然后以某种方式将其打印出来?

到目前为止,这是我的相关代码:

主班

package QuestionEditor;
import java.util.Set;
public class Main{
    public static void main (String[] args) {
        WordGroup secondWordGroup = new WordGroup ("When-you-play-play-hard-when-you-work-dont-play-at-all");


         Set<String> set = secondWordGroup.getWordCountsMap().keySet();

         System.out.println("set : " + set + "\n");

         for(String key : set)
         {
             System.out.println(key);
         }
        }
    }
Run Code Online (Sandbox Code Playgroud)

世界组类

package QuestionEditor;
import java.util.HashMap;

public class WordGroup {

    String  word;

    // Creates constructor which stores a string value in …
Run Code Online (Sandbox Code Playgroud)

java keyset

5
推荐指数
1
解决办法
5713
查看次数

用于多个字段上的键集分页的通用 SQL 谓词

高性能分页的常见解决方案是使用索引字段,从前一页的最后一个值开始每个新“页面”。例如,对于这样的数据集(假设 Category 和 ID 是主键):

Category | ID | Name
Red      | 10 | Bob Jones
Red      | 14 | Sam Smith
Red      | 16 | Jill White
Blue     | 10 | Mike Green
Blue     | 16 | Mary Brown
Run Code Online (Sandbox Code Playgroud)

假设(相当小的)页面大小为 1,如果我们要返回所有Red类别记录(假设 ORDER BY Category, ID):

SELECT * FROM table WHERE Category='Red' AND ID>'00' (1st page, returns Bob Jones)
SELECT * FROM table WHERE Category='Red' AND ID>'10' (2nd page, returns Sam Smith)
SELECT * FROM table WHERE Category='Red' …
Run Code Online (Sandbox Code Playgroud)

sql sql-server pagination orientdb keyset

5
推荐指数
2
解决办法
781
查看次数