gpt4 book ai didi

java - 如何在 Java 中将 Set> 复制到 List 中?

转载 作者:行者123 更新时间:2023-12-03 20:23:24 25 4
gpt4 key购买 nike

我想将数组的 Set<Set<Integer>> 复制到 Integer[] 的列表中。我想这样做是因为我想在每个数组的第一个元素为 0 时更改它,并将其放在最后。
我已经设法做到了,但是在 List 中,并且在循环 throw 时,我无法进行更改,因为数组仍然是 Set。
没有其他问题可以说明这一点,相反,当我们只有 Set<SomeWrapperClass> 时,他们会解释
也许其他一些解决方案?备注:我无法更改 Set<Set<Integer>>我的套装:

Set<Set<Integer>> indexs = new HashSet<>();
我只能通过这种方式转换为列表:
List<Set<Integer>> arrangedIndexOfCourses = new ArrayList<>();

static Set<Set<Integer>> coursesIndex = Sets.powerSet(Sets.newHashSet(1, 2, 3, 4, 5, 6, 7, 8, 9, 0));
static List<Set<Integer>> arrangedIndexOfCourses = new ArrayList<>();
以下方法返回由 0123456789( Guava 库)制成的所有唯一数字的出现
 private void indexSet(Set<Set<Integer>> coursesIndex) {
Set<Set<Integer>> indexs = new HashSet<>();
for (Set<Integer> token : coursesIndex) {
indexs.add(token);
arrangedIndexOfCourses.add(token);
count++;
}
}
以及我尝试更改数组的第一个 0 并最后放置的代码:
  for (Set<Integer> i : arrangedIndexOfCourses) {
if (i.contains(0)) {
Collections.rotate(arrangedIndexOfCourses, -1);
}
}

最佳答案

看来,这个任务的主要技巧是如何实现第一个元素为 0 时的旋转。
正如评论中提到的,并非所有类型的集合都保持顺序,因此都有一个“第一个”元素。但是在将集合转换为流时,即使对于 HashSet流中有第一个元素,除非它是空的。
因此,整数集的集合可以转换为整数数组的列表,如下所示:

  • 使用 limit 获取流的第一个元素或 findFirst
  • 与 0 比较,如果需要把它放在最后
  • 否则保持集合的流原样

  • Set<Set<Integer>> data = Set.of(
    Collections.emptySet(),
    new LinkedHashSet<>(Arrays.asList(0, 1, 2, 3)),
    new LinkedHashSet<>(Arrays.asList(4, 5, 6)),
    new LinkedHashSet<>(Arrays.asList(10, 0, 100, 1000)),
    new TreeSet<>(Arrays.asList(25, 0, 1, 16, 4, 9)),
    new HashSet<>(Arrays.asList(0, 5, 50))
    );

    List<Integer[]> rotatedZeros = data
    .stream()
    .map(s ->
    (s.stream().findFirst().orElse(-1) == 0 // or limit(1).findAny()
    ? Stream.concat(s.stream().skip(1), Stream.of(0))
    : s.stream())
    .toArray(Integer[]::new)
    )
    .collect(Collectors.toList());

    rotatedZeros.stream().map(Arrays::toString).forEach(System.out::println);
    输出:
    []
    [4, 5, 6]
    [1, 2, 3, 0]
    [10, 0, 100, 1000]
    [1, 4, 9, 16, 25, 0]
    [50, 5, 0]

    关于java - 如何在 Java 中将 Set<Set<Integer>> 复制到 List<Integer[]> 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66283700/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com