有一个方法saveCountryIslands需要一个String数组参数。有一个实体是国家和岛屿。

我一直在尝试使用以下方法保存提供的岛屿名称列表
jpa .save()

现有方法主体已经在工作(您可以在下面的代码中看到)。

有更有效的方法吗?

private void saveCountryIslands(String[] islandNames){

    List<Islands> listOfIsland = new ArrayList<>();
    Country country=new Country();

    Stream.of(islandNames).distinct().forEach(islandNamesFromArray -> {
      Islands islands = new Islands();
      islands.setIslandName(islandNamesFromArray);
      listOfIsland.add(islands);
    });

    country.setCountryIslands(listOfIsland);
    countryRepository.save(country);

}

最佳答案

您可以通过使用以下构造函数来带来可读性的一个小变化:

    public Islands(String name) {
        this.name = name;
    }


然后将现有代码重构为:

    List<Islands> listOfIsland = Stream.of(islandNames)
            .distinct()
            .map(Islands::new)
            .collect(Collectors.toList()); // collect 'toSet' depending on compatibility

10-06 09:42