当前位置: 首页 > 面试题库 >

Google Guava“压缩”两个列表

阙弘博
2023-03-14
问题内容

使用Google Guava(Google Commons),是否可以将两个大小相等的列表合并为一个列表,而新列表包含两个输入列表的复合对象?

例:

public class Person {
    public final String name;
    public final int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return "(" + name + ", " + age + ")";
    }
}

List<String> names = Lists.newArrayList("Alice", "Bob", "Charles");
List<Integer> ages = Lists.newArrayList(42, 27, 31);

List<Person> persons =
    transform with a function that converts (String, Integer) to Person
System.out.println(persons);

将输出:

[(Alice, 42), (Bob, 27), (Charles, 31)]

问题答案:

从Guava
21开始,可以通过以下方式实现Streams.zip()

List<Person> persons = Streams.zip(names.stream(), ages.stream(), Person::new)
                              .collect(Collectors.toList());


 类似资料:
  • 我有一个人的HashSet。一个人有一个名字,最后一个名字和年龄,比如:人(“汉斯”,“男人”,36) 我的任务是得到一份17岁以上的人的名单,按年龄对他们进行排序,并用姓氏来表示他们的名字,如:[“Hans Man”,“另一个名字”,“另一个名字”] 我只允许导入: 我的想法是先对它们进行排序,将名称映射到不同的流中,然后对它们进行压缩,但这不起作用。 提前谢谢你

  • 问题内容: 我有两个列表,每个列表具有相等数量的项目。这两个列表如下所示: 我正在寻找一个看起来像这样的清单: 我试图使用这样的东西: 合并两个列表列表的最佳方法是什么?提前致谢。 问题答案:

  • Ziplist 是由一系列特殊编码的内存块构成的列表, 一个 ziplist 可以包含多个节点(entry), 每个节点可以保存一个长度受限的字符数组(不以 \0 结尾的 char 数组)或者整数, 包括: 字符数组 长度小于等于 63 ()字节的字符数组 长度小于等于 16383 () 字节的字符数组 长度小于等于 4294967295 ()字节的字符数组 整数 4 位长,介于 0 至 12 之

  • 问题内容: 我有一个熊猫数据框。我尝试将包含字符串值的两列首先连接到列表中,然后使用zip,我将列表的每个元素都用’_’连接。我的数据集如下: 我想将这两列连接到第三列,如下所示,分别用于数据框的每一行。 我已经使用下面的代码在python中成功完成了此操作,但该数据框非常大,并且需要花费很长时间才能为整个数据框运行它。我想在PySpark中做同样的事情以提高效率。我已经成功读取了spark数据框

  • 我正在用Java构建一个文件浏览器,并在JTrees中列出文件/文件夹。我现在想做的是,当我到达一个压缩文件夹时,我想列出它的内容,但不首先提取它。 如果有人有想法,请分享。