相关疑难解决方法(0)

Java中的KeyValuePair

我正在寻找Java中的KeyValuePair类.
由于java.util大量使用接口,因此没有提供具体实现,只有Map.Entry接口.

我可以导入一些规范的实现吗?这是我讨厌实施100倍的"管道工编程"课程之一.

java key-value

229
推荐指数
7
解决办法
33万
查看次数

使用流转换和过滤Java Map

我有一个我想要转换和过滤的Java Map.作为一个简单的例子,假设我想将所有值转换为整数然后删除奇数条目.

Map<String, String> input = new HashMap<>();
input.put("a", "1234");
input.put("b", "2345");
input.put("c", "3456");
input.put("d", "4567");

Map<String, Integer> output = input.entrySet().stream()
        .collect(Collectors.toMap(
                Map.Entry::getKey,
                e -> Integer.parseInt(e.getValue())
        ))
        .entrySet().stream()
        .filter(e -> e.getValue() % 2 == 0)
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));


System.out.println(output.toString());
Run Code Online (Sandbox Code Playgroud)

这是正确的,并产生: {a=1234, c=3456}

但是,我不禁想知道是否有办法避免.entrySet().stream()两次打电话.

有没有办法可以执行转换和过滤操作,.collect()最后只调用 一次?

java java-8 java-stream collectors

35
推荐指数
3
解决办法
4万
查看次数

如何将条目放入地图?

有什么办法可以把整个Entry对象放到一个Map像这样的对象:

map.put(entry);
Run Code Online (Sandbox Code Playgroud)

而不是传递键值对,如:

map.put(key,value);
Run Code Online (Sandbox Code Playgroud)

java dictionary

26
推荐指数
2
解决办法
3万
查看次数

如何模拟Map的返回值?

我的代码看起来像这样:

for (Map.Entry<Integer, Action> entry : availableActions.entrySet()) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

我试图像这样嘲笑它:

Map mockAvailableActions = mock(Map.class, Mockito.RETURNS_DEEP_STUBS);
mockAvailableActions.put(new Integer(1), mockAction);
Run Code Online (Sandbox Code Playgroud)

我认为这就足够了.但是entrySet是空的.所以我补充说:

when(mockAvailableActions.entrySet().iterator()).thenReturn(mockIterator);
when(mockIterator.next()).thenReturn(mockAction);
Run Code Online (Sandbox Code Playgroud)

仍然是entrySet为空.我究竟做错了什么?感谢您的任何意见!

java mockito

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

条目列表,如何添加新条目?

在Java中,我正在实现这个:

List<Entry<String, Integer>> listObjects = new ArrayList<Entry<String, Integer>>();
Run Code Online (Sandbox Code Playgroud)

但是如何添加新条目?

因为它不适用于: listObjects.add(new Entry<"abc", 1>());

提前致谢.

java

6
推荐指数
2
解决办法
3万
查看次数

如何将地图条目添加到ArrayList?

我正在创建Map Entry键值对的ArrayList.这样我就可以存储大量单个单词(作为键)并保存它们的总次数(作为值).

我需要能够按值对ArrayList进行排序,以便我可以按其值排序单词.

我有两个问题:

  1. 我不知道将映射条目添加到ArrayList的语法
  2. 我不确定如何对ArrayList进行排序

任何帮助非常感谢!

protected void addKeywords(Status status) {
    // get tweet
    String str = status.getText();
    // split into an array remove punctuation and make lower case
    String[] splited = str.replaceAll("[^a-zA-Z ]", "").toLowerCase()
            .split("\\s+");
    // vars used in loop
    String thisStr;
    int wordTot;
    Entry<String, Integer> newEntry = null;

    for (int i = 0; i < splited.length; i++) {
        // get word from array
        thisStr = splited[i].toLowerCase();
        thisStr = "hi";

        // if this is the first word to …
Run Code Online (Sandbox Code Playgroud)

java dictionary arraylist

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

创建新的Map.Entry - 似乎比它需要的更难

我有这两种方法:

 @Override
  public void done(E e, Map.Entry<String, T> m) {

  }

  @Override
  public void done(E e, String k, T v) {
     this.done(e, null);
  }
Run Code Online (Sandbox Code Playgroud)

而不是传递null,我如何创建一个新的Map.Entry?我试过了:

this.done(e, Map.of(k,v));
Run Code Online (Sandbox Code Playgroud)

但是这会创建一个Map而不是Map.Entry.

java hashmap java-11

2
推荐指数
1
解决办法
93
查看次数

Map.entry(...) 对于类型 Map 未定义

我在学校的电脑上玩弄 Java 和哈希图。

我能够即时实例化一个Entry类型String, Integer。然后将其添加到ArrayListEntrie秒。我将此代码通过电子邮件发送给自己以备后用。

但是在我的家用电脑和笔记本电脑上,它不会让我。相同的确切代码说

该方法entry(string,int)未定义类型Map

代码是:

Map.Entry<String, Integer> entry = Map.entry(largest, maxCount);
Run Code Online (Sandbox Code Playgroud)

我认为这与Map.Entry作为接口的事实有关?

正如谷歌结果似乎说你必须让自己的Entry班级来做到这一点?但是在较新版本的 Java 中,这种情况发生了变化吗?为什么我之前可以很好地执行此代码?

java dictionary hashmap

0
推荐指数
1
解决办法
1116
查看次数