Is there a oneliner to create a SortedSet filled with one or multiple elements in Java?

vivansai21

Neues Mitglied
I am just asking myself if there is a more convenient way to create a SortedSet, e.g. a TreeSet in Java than the one-liner I am currently using in tests:

new TreeSet<>(Set.of(element1, element2));

Something like SortedSet.of(...) maybe from Apache Commons or the like?
 

KonradN

Super-Moderator
Mitarbeiter
Du hast doch schon eine gute, brauchbare Lösung. Ein SortedSet.of(...) gibt es nicht. Für sowas eine Library einbinden wäre auch etwas ungewöhnlich.

Wenn das zu groß ist, dann könntest Du natürlich eine Klasse mit einer generischen, statischen Methode "of" bauen, das eben genau sowas macht.

Also etwas wie:
Java:
public class SortedSets {
    public static <T extends Comparable<T>> SortedSet<T> of(T... elements) {
        return new TreeSet<>(Arrays.asList(elements));
    }
}

Dann hättest Du in Deinem Code ein einfaches SortedSets.of(element1, element2)

(Statt SortedSets sind auch andere Namen denkbar wie SortedSetHelper oder so. Da gibt es ja diverse Ideen, wie so Utility Klassen benannt werden können. Mit SortedSets entspricht es dem Naming wie "Arrays" und so).
 

KonradN

Super-Moderator
Mitarbeiter
The requirement is:
to create a SortedSet, e.g. a TreeSet in Java than the one-line

addAll does not crate a SortedSet. So addAll cannot be used at all for this. In the best case, it will be a part of a solution. But the Op already got a good one liner. But as I replied already: He could create is own Class with a simple method that creates a such a TreeSet. That way he would get the xxxx.of(.....) Syntax that he wants.
 

KonradN

Super-Moderator
Mitarbeiter
Wenn Du das einfach mal etwas erläutern würdest ....

Etwas in eine Methode auszulagern ist ein Pattern, des gerade bezüglich DRY angewendet wird.
Und der TE scheint ja genau das zu brauchen. Und zwar so sehr, dass ihn selbst die Zeile, die er schon hat, stört. Da zu sagen, dass er es nicht braucht, ist also aus meiner Sicht nicht korrekt.

Aber das ist nicht die eigentliche Diskussion gerade - derzeit geht es um das vorgeschlagene addAll, das in Deinen Augen eine Lösung sein sollte ...
 

KonradN

Super-Moderator
Mitarbeiter
Ok, an der Stelle macht eine weitere Diskussion relativ wenig Sinn, denn eine gewisse Person will ganz offensichtlich keine Diskussion führen. Zumal ich befürchte, dass @mrBrown durch eine Sperrung eines Accounts eine weitere Auseinandersetzung zeitnah unterbinden könnte....
 

Ähnliche Java Themen

Neue Themen


Oben