/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static enum Type {
A, B, C
}
private static class Friendship implements Comparable<Friendship> {
@Override
return "[" + username + " type:" + type + "]";
}
public Friendship
(Type type,
String username
) { super();
this.type = type;
this.username = username;
}
Type type;
public Type getType() {
return type;
}
return username;
}
public int compareTo(Friendship another) {
if (!this.getType().equals(another.getType())) {
// if type are not equal, so we might have at most one A
if (this.getType().equals(Type.A)) { // on left side
return -1;
}
if (another.getType().equals(Type.A)) { // or, on rightside
return 1;
}
}
// or we have on both sides or neither side
return another.getUsername().compareTo(this.getUsername());
}
}
public static void main
(String[] args
) { List
<Friendship
> list
= Arrays.
asList(new Friendship
(Type.
C,
"aa"),
new Friendship(Type.A, "cc"), new Friendship(Type.B, "bb"),
new Friendship(Type.B, "aa"), new Friendship(Type.C, "cc"),
new Friendship(Type.C, "zz"), new Friendship(Type.A, "bb"));
for (Friendship item : list)
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKcHJpdmF0ZSBzdGF0aWMgZW51bSBUeXBlIHsKCQlBLCBCLCBDCgl9CgoJcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRnJpZW5kc2hpcCBpbXBsZW1lbnRzIENvbXBhcmFibGU8RnJpZW5kc2hpcD4gewoJCUBPdmVycmlkZQoJCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CgkJCXJldHVybiAiWyIgKyB1c2VybmFtZSArICIgdHlwZToiICsgdHlwZSArICJdIjsKCQl9CgoJCXB1YmxpYyBGcmllbmRzaGlwKFR5cGUgdHlwZSwgU3RyaW5nIHVzZXJuYW1lKSB7CgkJCXN1cGVyKCk7CgkJCXRoaXMudHlwZSA9IHR5cGU7CgkJCXRoaXMudXNlcm5hbWUgPSB1c2VybmFtZTsKCQl9CgoJCVR5cGUgdHlwZTsKCgkJcHVibGljIFR5cGUgZ2V0VHlwZSgpIHsKCQkJcmV0dXJuIHR5cGU7CgkJfQoKCQlTdHJpbmcgdXNlcm5hbWU7CgoJCXB1YmxpYyBTdHJpbmcgZ2V0VXNlcm5hbWUoKSB7CgkJCXJldHVybiB1c2VybmFtZTsKCQl9CgoJCXB1YmxpYyBpbnQgY29tcGFyZVRvKEZyaWVuZHNoaXAgYW5vdGhlcikgewoKCQkJaWYgKCF0aGlzLmdldFR5cGUoKS5lcXVhbHMoYW5vdGhlci5nZXRUeXBlKCkpKSB7CgkJCQkvLyBpZiB0eXBlIGFyZSBub3QgZXF1YWwsIHNvIHdlIG1pZ2h0IGhhdmUgYXQgbW9zdCBvbmUgQQoKCQkJCWlmICh0aGlzLmdldFR5cGUoKS5lcXVhbHMoVHlwZS5BKSkgeyAvLyBvbiBsZWZ0IHNpZGUKCQkJCQlyZXR1cm4gLTE7CgkJCQl9CgoJCQkJaWYgKGFub3RoZXIuZ2V0VHlwZSgpLmVxdWFscyhUeXBlLkEpKSB7IC8vIG9yLCBvbiByaWdodHNpZGUKCQkJCQlyZXR1cm4gMTsKCQkJCX0KCQkJfQoJCQkvLyBvciB3ZSBoYXZlIG9uIGJvdGggc2lkZXMgb3IgbmVpdGhlciBzaWRlCgkJCXJldHVybiBhbm90aGVyLmdldFVzZXJuYW1lKCkuY29tcGFyZVRvKHRoaXMuZ2V0VXNlcm5hbWUoKSk7CgkJfQoKCX0KCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgkJTGlzdDxGcmllbmRzaGlwPiBsaXN0ID0gQXJyYXlzLmFzTGlzdChuZXcgRnJpZW5kc2hpcChUeXBlLkMsICJhYSIpLAoJCQkJbmV3IEZyaWVuZHNoaXAoVHlwZS5BLCAiY2MiKSwgbmV3IEZyaWVuZHNoaXAoVHlwZS5CLCAiYmIiKSwKCQkJCW5ldyBGcmllbmRzaGlwKFR5cGUuQiwgImFhIiksIG5ldyBGcmllbmRzaGlwKFR5cGUuQywgImNjIiksCgkJCQluZXcgRnJpZW5kc2hpcChUeXBlLkMsICJ6eiIpLCBuZXcgRnJpZW5kc2hpcChUeXBlLkEsICJiYiIpKTsKCQlDb2xsZWN0aW9ucy5zb3J0KGxpc3QpOwoJCWZvciAoRnJpZW5kc2hpcCBpdGVtIDogbGlzdCkKCQkJU3lzdGVtLm91dC5wcmludGxuKGl0ZW0pOwoJfQoKfQ==