/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.stream.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// Populate
Team alphaTeam = new Team(
UUID.fromString( "b4c94867-8ac7-4caf-bf49-b79df92cff82" ) ,
"Alpha",
1 ,
"Alice",
),
2 ,
"Bob",
)
)
);
Team betaTeam = new Team(
UUID.fromString( "9d12160a-94cc-45c6-a465-12cdf3d1a503" ) ,
"Beta",
3,
"Carol",
),
4,
"Davis",
)
)
);
Team gammaTeam = new Team(
UUID.fromString( "f440ac2d-9175-47d8-a5e2-3102e0d162bc" ) ,
"Gamma",
5 ,
"Ernestine",
),
6 ,
"Frank",
)
)
);
List < Team
> teams
= List.
of( alphaTeam , betaTeam , gammaTeam
);
// Report
List<Team> teamsWhoseMembershipIsEntirelyActive =
teams
.stream()
.filter(
team
-> team.
memberList().
stream().
allMatch( member
-> member.
status().
equals( Member.
Status.
ACTIVE ) ) )
.collect( Collectors.toList() );
;
System.
out.
println( "teamsWhoseMembershipIsEntirelyActive = " + teamsWhoseMembershipIsEntirelyActive
); }
}
private final int id;
private final Status status;
this.id = id;
this.name = name;
this.status = status;
}
public int id () { return id; }
public String name
() { return name
; }
public Status status () { return status; }
@Override
public boolean equals
( Object obj
) { if ( obj == this ) return true;
if ( obj == null || obj.getClass() != this.getClass() ) return false;
return this.id == that.id && Objects.equals( this.name , that.name ) && Objects.equals( this.status , that.status );
}
@Override
public int hashCode () {
return Objects.hash( id , name , status );
}
@Override
return "Member[" + "id=" + id + ", " + "name=" + name + ", " + "status=" + status + ']';
}
public enum Status {
ACTIVE,
INACTIVE,
}
}
final class Team {
private final UUID id;
this.id = id;
this.name = name;
this.memberList = memberList;
}
public UUID id () { return id; }
public String name
() { return name
; }
public List < Member > memberList
() { return memberList
; }
@Override
public boolean equals
( Object obj
) { if ( obj == this ) return true;
if ( obj == null || obj.getClass() != this.getClass() ) return false;
var that = ( Team ) obj;
return Objects.equals( this.id , that.id ) && Objects.equals( this.name , that.name ) && Objects.equals( this.memberList , that.memberList );
}
@Override
public int hashCode () {
return Objects.hash( id , name , memberList );
}
@Override
return "Team[" + "id=" + id + ", " + "name=" + name + ", " + "memberList=" + memberList + ']';
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS51dGlsLnN0cmVhbS4qIDsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CiAgICAgICAgLy8gUG9wdWxhdGUKCiAgICAgICAgVGVhbSBhbHBoYVRlYW0gPSBuZXcgVGVhbSgKICAgICAgICAgICAgICAgIFVVSUQuZnJvbVN0cmluZyggICJiNGM5NDg2Ny04YWM3LTRjYWYtYmY0OS1iNzlkZjkyY2ZmODIiICkgLAogICAgICAgICAgICAgICAgIkFscGhhIiwKICAgICAgICAgICAgICAgIExpc3Qub2YoCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBNZW1iZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsaWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1iZXIuU3RhdHVzLkFDVElWRQogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICBuZXcgTWVtYmVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCb2IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlci5TdGF0dXMuQUNUSVZFCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICApOwoKICAgICAgICBUZWFtIGJldGFUZWFtID0gbmV3IFRlYW0oCiAgICAgICAgICAgICAgICBVVUlELmZyb21TdHJpbmcoICAiOWQxMjE2MGEtOTRjYy00NWM2LWE0NjUtMTJjZGYzZDFhNTAzIiApICwKICAgICAgICAgICAgICAgICJCZXRhIiwKICAgICAgICAgICAgICAgIExpc3Qub2YoCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBNZW1iZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fyb2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlci5TdGF0dXMuSU5BQ1RJVkUKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE1lbWJlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEYXZpcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtYmVyLlN0YXR1cy5BQ1RJVkUKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICk7CgogICAgICAgIFRlYW0gZ2FtbWFUZWFtID0gbmV3IFRlYW0oCiAgICAgICAgICAgICAgICBVVUlELmZyb21TdHJpbmcoICAiZjQ0MGFjMmQtOTE3NS00N2Q4LWE1ZTItMzEwMmUwZDE2MmJjIiApICwKICAgICAgICAgICAgICAgICJHYW1tYSIsCiAgICAgICAgICAgICAgICBMaXN0Lm9mKAogICAgICAgICAgICAgICAgICAgICAgICBuZXcgTWVtYmVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcm5lc3RpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlci5TdGF0dXMuQUNUSVZFCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBNZW1iZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZyYW5rIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1iZXIuU3RhdHVzLkFDVElWRQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgKTsKCiAgICAgICAgTGlzdCA8IFRlYW0gPiB0ZWFtcyA9IExpc3Qub2YoIGFscGhhVGVhbSAsIGJldGFUZWFtICwgZ2FtbWFUZWFtICk7CgogICAgICAgIC8vIFJlcG9ydAogICAgICAgIExpc3Q8VGVhbT4gdGVhbXNXaG9zZU1lbWJlcnNoaXBJc0VudGlyZWx5QWN0aXZlID0KICAgICAgICAgICAgICAgIHRlYW1zCiAgICAgICAgICAgICAgICAgICAgICAgIC5zdHJlYW0oKQogICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYW0gLT4gdGVhbS5tZW1iZXJMaXN0KCkuc3RyZWFtKCkuYWxsTWF0Y2goIG1lbWJlciAtPiBtZW1iZXIuc3RhdHVzKCkuZXF1YWxzKCBNZW1iZXIuU3RhdHVzLkFDVElWRSApICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAuY29sbGVjdCggQ29sbGVjdG9ycy50b0xpc3QoKSApOwogICAgICAgIDsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAidGVhbXNXaG9zZU1lbWJlcnNoaXBJc0VudGlyZWx5QWN0aXZlID0gIiArIHRlYW1zV2hvc2VNZW1iZXJzaGlwSXNFbnRpcmVseUFjdGl2ZSApOwoJfQp9CgpmaW5hbCBjbGFzcyBNZW1iZXIgewogICAgcHJpdmF0ZSBmaW5hbCBpbnQgaWQ7CiAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBuYW1lOwogICAgcHJpdmF0ZSBmaW5hbCBTdGF0dXMgc3RhdHVzOwoKICAgIHB1YmxpYyBNZW1iZXIgKCBpbnQgaWQgLCBTdHJpbmcgbmFtZSAsIFN0YXR1cyBzdGF0dXMgKSB7CiAgICAgICAgdGhpcy5pZCA9IGlkOwogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7CiAgICB9CgogICAgcHVibGljIGludCBpZCAoKSB7IHJldHVybiBpZDsgfQoKICAgIHB1YmxpYyBTdHJpbmcgbmFtZSAoKSB7IHJldHVybiBuYW1lOyB9CgogICAgcHVibGljIFN0YXR1cyBzdGF0dXMgKCkgeyByZXR1cm4gc3RhdHVzOyB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMgKCBPYmplY3Qgb2JqICkgewogICAgICAgIGlmICggb2JqID09IHRoaXMgKSByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiAoIG9iaiA9PSBudWxsIHx8IG9iai5nZXRDbGFzcygpICE9IHRoaXMuZ2V0Q2xhc3MoKSApIHJldHVybiBmYWxzZTsKICAgICAgICB2YXIgdGhhdCA9ICggTWVtYmVyICkgb2JqOwogICAgICAgIHJldHVybiB0aGlzLmlkID09IHRoYXQuaWQgJiYgT2JqZWN0cy5lcXVhbHMoIHRoaXMubmFtZSAsIHRoYXQubmFtZSApICYmIE9iamVjdHMuZXF1YWxzKCB0aGlzLnN0YXR1cyAsIHRoYXQuc3RhdHVzICk7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgaW50IGhhc2hDb2RlICgpIHsKICAgICAgICByZXR1cm4gT2JqZWN0cy5oYXNoKCBpZCAsIG5hbWUgLCBzdGF0dXMgKTsKICAgIH0KCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcgKCkgewogICAgICAgIHJldHVybiAiTWVtYmVyWyIgKyAiaWQ9IiArIGlkICsgIiwgIiArICJuYW1lPSIgKyBuYW1lICsgIiwgIiArICJzdGF0dXM9IiArIHN0YXR1cyArICddJzsKICAgIH0KCiAgICBwdWJsaWMgZW51bSBTdGF0dXMgewogICAgICAgIEFDVElWRSwKICAgICAgICBJTkFDVElWRSwKICAgICAgICBVTktOT1dOCiAgICB9Cn0KCgpmaW5hbCBjbGFzcyBUZWFtIHsKICAgIHByaXZhdGUgZmluYWwgVVVJRCBpZDsKICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG5hbWU7CiAgICBwcml2YXRlIGZpbmFsIExpc3QgPCBNZW1iZXIgPiBtZW1iZXJMaXN0OwoKICAgIHB1YmxpYyBUZWFtICggVVVJRCBpZCAsIFN0cmluZyBuYW1lICwgTGlzdCA8IE1lbWJlciA+IG1lbWJlckxpc3QgKSB7CiAgICAgICAgdGhpcy5pZCA9IGlkOwogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICAgICAgdGhpcy5tZW1iZXJMaXN0ID0gbWVtYmVyTGlzdDsKICAgIH0KCiAgICBwdWJsaWMgVVVJRCBpZCAoKSB7IHJldHVybiBpZDsgfQoKICAgIHB1YmxpYyBTdHJpbmcgbmFtZSAoKSB7IHJldHVybiBuYW1lOyB9CgogICAgcHVibGljIExpc3QgPCBNZW1iZXIgPiBtZW1iZXJMaXN0ICgpIHsgcmV0dXJuIG1lbWJlckxpc3Q7IH0KCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyAoIE9iamVjdCBvYmogKSB7CiAgICAgICAgaWYgKCBvYmogPT0gdGhpcyApIHJldHVybiB0cnVlOwogICAgICAgIGlmICggb2JqID09IG51bGwgfHwgb2JqLmdldENsYXNzKCkgIT0gdGhpcy5nZXRDbGFzcygpICkgcmV0dXJuIGZhbHNlOwogICAgICAgIHZhciB0aGF0ID0gKCBUZWFtICkgb2JqOwogICAgICAgIHJldHVybiBPYmplY3RzLmVxdWFscyggdGhpcy5pZCAsIHRoYXQuaWQgKSAmJiBPYmplY3RzLmVxdWFscyggdGhpcy5uYW1lICwgdGhhdC5uYW1lICkgJiYgT2JqZWN0cy5lcXVhbHMoIHRoaXMubWVtYmVyTGlzdCAsIHRoYXQubWVtYmVyTGlzdCApOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIGludCBoYXNoQ29kZSAoKSB7CiAgICAgICAgcmV0dXJuIE9iamVjdHMuaGFzaCggaWQgLCBuYW1lICwgbWVtYmVyTGlzdCApOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIFN0cmluZyB0b1N0cmluZyAoKSB7CiAgICAgICAgcmV0dXJuICJUZWFtWyIgKyAiaWQ9IiArIGlkICsgIiwgIiArICJuYW1lPSIgKyBuYW1lICsgIiwgIiArICJtZW1iZXJMaXN0PSIgKyBtZW1iZXJMaXN0ICsgJ10nOwogICAgfQp9Cg==