为什么无法使用.toSet()在Java中创建集合?

麦凯

我想从特定键的属性创建值的集合。该方法以这种方式工作:

Collection<String> getValueOfKey(final Collection<Localization> input, final String key) {
        return input.stream().map(l -> {
            return l.getProperties();
        }).map(p -> {
            return p.getProperty(key, "");
        }).collect(Collectors.toList());
    }

首先,我想使用Collectors.toSet()而不是,Collectors.toList()但结果却是错误的(它只是给了我来自的价值en)。有人知道我为什么不能使用.toSet()吗?

这是我的TestCode:

public class RowCreatorTest {
private final Properties fixturePropertieDe = new Properties();
private final Properties fixturePropertieEn = new Properties();
private final Localization de = new Localization(Languages.GERMAN, fixturePropertieDe);
private final Localization en = new Localization(Languages.ENGLISH, fixturePropertieEn);

private final RowCreator sut = new RowCreator();

@Before
public void prepareFixtures() {
    fixturePropertieDe.put("key1", "foo1");
    fixturePropertieDe.put("key3", "foo3");

    fixturePropertieEn.put("key1", "bar1");
    fixturePropertieEn.put("key2", "bar2");
}

@Test
public void getValueOfKey() {
    assertThat(sut.getValueOfKey(Arrays.asList(de, en), "key1"), contains("foo1", "bar1"));
    assertThat(sut.getValueOfKey(Arrays.asList(de, en), "key2"), contains("", "bar2"));
    assertThat(sut.getValueOfKey(Arrays.asList(de, en), "key3"), contains("foo3", ""));
}

这是测试内容的屏幕截图测试屏幕截图

他们是

根据您所发布的错误的链接(expected iterable containing ["foo1","bar1"] but item 0 was "bar1"),断言期望这两个值以指定的顺序显示(第一个为“ foo1”,然后为“ bar1”),但是Set不保持顺序,并且“ bar1”首先出现在上进行迭代时Set,因此断言失败。

因此,问题出在断言中,而不是在使用中toSet()

Set例如,如果您使用LinkedHashSet(替换toSet()toCollection(LinkedHashSet::new),则可以根据插入顺序强制对进行迭代这样可以确保断言不会失败。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么无法使用.toSet()在Java中创建集合?

来自分类Dev

为什么Matlab中无法使用SIFT?

来自分类Dev

如何使用Java在集合中创建分区?

来自分类常见问题

为什么我创建的菜单无法使用新的Intent

来自分类Dev

为什么在Windows上无法使用GLFW创建窗口?

来自分类Dev

为什么我无法使用php mkdir()创建目录?

来自分类Dev

为什么在Xcode 6中无法使用Assistant Preview?

来自分类Dev

为什么在我的Enterprise Architect版本中无法使用脚本?

来自分类Dev

为什么在Laravel中无法使用登出路线?

来自分类Dev

为什么在iText PDF文档中快递字体无法使用?

来自分类Dev

为什么订阅在Angular中无法使用Observable工作

来自分类Dev

为什么在Jetpack Compose中无法使用Composable列表?

来自分类Dev

为什么在Yii中无法使用多种方案?

来自分类Dev

为什么在Outlook中无法使用SendInput Ctrl + V?

来自分类Dev

为什么Map无法在JS中的新数组上使用

来自分类Dev

为什么在python中无法使用configparser获取本地IP

来自分类Dev

如何使用java中的集合创建嵌套的json

来自分类Dev

为什么我无法使用python在树莓派中创建杯子连接?

来自分类Dev

为什么Purr中的地图功能无法使用ggplot2创建不同的图?

来自分类Dev

为什么我无法使用 python3.8 在 ubuntu 20.04 LTS 中创建 pipenv shell?

来自分类Dev

为什么Python无法识别集合中的元素?

来自分类Dev

为什么Python无法识别集合中的元素?

来自分类Dev

如果我使用多个捕获块,为什么Java无法检测到无法到达的捕获块?

来自分类Dev

RAID中未使用的空间会发生什么,为什么无法访问?

来自分类Dev

为什么使用Internet Explorer在特定网站中边框半径无法使用?

来自分类Dev

为什么无法从给定来源创建信封?

来自分类Dev

为什么我的逻辑无法创建函数?

来自分类Dev

为什么无法创建类型参数的实例?

来自分类Dev

为什么无法创建子窗口?

Related 相关文章

  1. 1

    为什么无法使用.toSet()在Java中创建集合?

  2. 2

    为什么Matlab中无法使用SIFT?

  3. 3

    如何使用Java在集合中创建分区?

  4. 4

    为什么我创建的菜单无法使用新的Intent

  5. 5

    为什么在Windows上无法使用GLFW创建窗口?

  6. 6

    为什么我无法使用php mkdir()创建目录?

  7. 7

    为什么在Xcode 6中无法使用Assistant Preview?

  8. 8

    为什么在我的Enterprise Architect版本中无法使用脚本?

  9. 9

    为什么在Laravel中无法使用登出路线?

  10. 10

    为什么在iText PDF文档中快递字体无法使用?

  11. 11

    为什么订阅在Angular中无法使用Observable工作

  12. 12

    为什么在Jetpack Compose中无法使用Composable列表?

  13. 13

    为什么在Yii中无法使用多种方案?

  14. 14

    为什么在Outlook中无法使用SendInput Ctrl + V?

  15. 15

    为什么Map无法在JS中的新数组上使用

  16. 16

    为什么在python中无法使用configparser获取本地IP

  17. 17

    如何使用java中的集合创建嵌套的json

  18. 18

    为什么我无法使用python在树莓派中创建杯子连接?

  19. 19

    为什么Purr中的地图功能无法使用ggplot2创建不同的图?

  20. 20

    为什么我无法使用 python3.8 在 ubuntu 20.04 LTS 中创建 pipenv shell?

  21. 21

    为什么Python无法识别集合中的元素?

  22. 22

    为什么Python无法识别集合中的元素?

  23. 23

    如果我使用多个捕获块,为什么Java无法检测到无法到达的捕获块?

  24. 24

    RAID中未使用的空间会发生什么,为什么无法访问?

  25. 25

    为什么使用Internet Explorer在特定网站中边框半径无法使用?

  26. 26

    为什么无法从给定来源创建信封?

  27. 27

    为什么我的逻辑无法创建函数?

  28. 28

    为什么无法创建类型参数的实例?

  29. 29

    为什么无法创建子窗口?

热门标签

归档