Java 如何遍历对象的HashSet并在ToString方法中打印每个对象的字符串值? HashSet士兵;//它有名字、等级、描述 @凌驾 公共字符串toString(){ return“团队:”+teamName+“\n”+“等级:”+getRanking(士兵)+“\n” +团队成员名称为:“+”\n“+士兵。迭代器().hasNext(); //最后一行不行 //我也试过士兵.forEach(System.out::println),但不起作用 }

Java 如何遍历对象的HashSet并在ToString方法中打印每个对象的字符串值? HashSet士兵;//它有名字、等级、描述 @凌驾 公共字符串toString(){ return“团队:”+teamName+“\n”+“等级:”+getRanking(士兵)+“\n” +团队成员名称为:“+”\n“+士兵。迭代器().hasNext(); //最后一行不行 //我也试过士兵.forEach(System.out::println),但不起作用 },java,hashset,Java,Hashset,有人能告诉我如何在重写的toString方法中打印Hashset中的所有名称吗。ThankhasNext()只返回一个布尔值,指示迭代器是否完成。 您仍然需要调用next()(在循环中)来获取下一个值。 请参阅:如果您使用Java8。使用流API很简单: HashSet<Soldier> soldiers; // it has name, rank, description @Override public String toString(){ retu

有人能告诉我如何在重写的toString方法中打印Hashset中的所有名称吗。Thank

hasNext()只返回一个布尔值,指示迭代器是否完成。 您仍然需要调用next()(在循环中)来获取下一个值。
请参阅:

如果您使用Java8。使用流API很简单:

HashSet<Soldier> soldiers;           // it has name, rank, description

@Override
public String toString(){
    return "Team: " + teamName + "\n" + "Rank: " + getRanking(soldiers) + "\n" 
     + "Team Members Names are: "+"\n" + soldiers.iterator().hasNext();
    //last line doesn't work
    // I also tried soldiers.forEach(System.out::println) but doesn't work
}
您将获得下一个结果:

喧闹

标记

大卫

。。。士兵们设定的价值观


士兵.stream().map(Object::toString).collect(collector.joining(“,”)
。或者干脆
士兵
,尽管那样会打印
[andy,ben,chris]
。简单
字符串。join(“,”,士兵)
就可以了。@and yturner我怎么能只打印士兵中的每个字符串值而不是整个对象呢。这有意义吗?ThanksI在集合中有三个不同的字符串值。我只想打印第一个字符串值,即士兵的名字。我可以使用getName()方法访问士兵的姓名。我还想在新行中打印每个名称。@请使用
Soldier::getName
代替
String::toString
。谢谢@AndyTurner
public class Test {

    public static void main(String[] args) {
        Set<String> strings = new HashSet<>();

        strings.add("111");
        strings.add("113");
        strings.add("112");
        strings.add("114");

        String contactString = strings.stream().map(String::toString).collect(Collectors.joining(","));
    }
    
}
Set<Soldier> soldiers = new HashSet<>();
String soldierNames = soldiers.stream().map(Soldier::getName).collect(Collectors.joining("\n"));