从Java方法返回两个哈希集

x33g5p2x  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(134)

我这里有一段代码,我想把它转换成一个方法。
问题是我需要两个哈希的结果
如何创建一个方法来返回这两个散列集(allPeopleFromTable和visibleInfo)?

public method foo: 

Set<People> allPeopleFromTable = new HashSet<>();
        Set<People> visibleInfo = new HashSet<>();
        for (ResultSet rs : resultSets) {
            while (rs.next()) {
                final Table people = new Table(rs);

                allPeopleFromTable.add(people);
                if (isVisible(people)) {
                    visibleInfo.add(people);
                }
            }
        }

then in the main method I want to do
visibleInfo = getfoo(...)
allPeopleFromTable = getfoo (..)
dphi5xsq

dphi5xsq1#

一种选择是将它们传递到方法中:

void foo(Set<People> allPeopleFromTable, Set<People> visibleInfo) {
    // add items to sets
}

另一个选项是返回集合列表:

List<Set<People>> foo() {
    // create sets
    return Arrays.asList(allPeopleFromTable, visibleInfo);
}

或者你可以返回一个元组类,比如Entry

Map.Entry<Set<People>, Set<People>> foo() {
    // create sets
    return Map.entry(allPeopleFromTable, visibleInfo);
}

最“合适”的方法是将它们 Package 在一个定制类中。

record PeopleSets(Set<People> allPeopleFromTable, Set<People> visibleInfo) {}

PeopleSets foo() {
    // create sets
    return new PeopleSets(allPeopleFromTable, visibleInfo);
}

本例使用records,但如果您使用的是较早版本的Java,则可以使用传统的类。

相关问题