java - Stream.of 具有混合输入内容

标签 java java-8 java-stream

我想知道是否可以替换以下代码:

Object o;

// o can be one of the two following things
o = Arrays.asList("Toto", "tata", "Titi");
o = "Test";

if (o instanceof List<?>) {
    ((List<?>) o).stream().forEach(System.out::println);
} else {
    System.out.println(o);
}

使用Stream.of来实现一些不那么丑陋的东西。我想到了这一点:

Object o;

// o can be one of the two following things
o = Arrays.asList("Toto", "tata", "Titi");
o = "Test";

Stream.of(o).forEach(System.out::println);

但显然它不起作用,因为 Stream.of(aList) 不会“展平”其内容。

有什么想法吗?我在梦想着不存在的东西吗?

谢谢

PS。我不知道 forEach 调用之前的 Object 类型。这些代码只是问题的一个简单示例。

最佳答案

如果您想要“不那么丑陋”的东西,您就不应该首先将数据类型扩展到Object:

List<String> o;

// o can be one of the two following things
o = Arrays.asList("Toto", "tata", "Titi");
o = Collections.singletonList("Test");

o.forEach(System.out::println);

当然,如果你有一个对象,你可以做类似的事情

(o instanceof List? ((List<?>)o).stream(): Stream.of(o)).forEach(System.out::println);

但我认为这仍然和你原来的方法一样丑陋......

关于java - Stream.of 具有混合输入内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258543/

相关文章:

java - 使两个不同的方法相互同步或同步变量

java 8并行流按给定值组织列表

java-8 - Java 8 流合并部分重复

java - 如何在没有重复操作开销的情况下进行过滤和映射

java - 如何将我的 While 循环重写为递归?

Java - 用多个字符替换一个字符

java - 就其线程模型而言,hazelcast 如何执行映射条目驱逐?

Java 8 Stream - 如何返回用要查找的项目列表替换字符串内容

java - Stream.sorted().forEach() 是否按预期工作?

java - 处理 Collectors.toMap() 函数中的重复键