উত্তর:
এখন জাভা 8 এর সাহায্যে আপনি তৃতীয় পক্ষের কাঠামোর প্রয়োজন ছাড়াই এটি করতে পারেন:
Set<String> set = Stream.of("a","b","c").collect(Collectors.toSet());
সংগ্রহকারী দেখুন ।
উপভোগ করুন!
পেয়ারা ব্যবহার করে , এটি এতটা সহজ:
Set<String> mySet = ImmutableSet.<String> of("a", "b");
বা একটি পরিবর্তনীয় সেট জন্য:
Set<String> mySet = Sets.newHashSet("a", "b")
আরও ডেটা ধরণের জন্য পেয়ারা ব্যবহারকারী গাইড দেখুন
Sets.newHashSet("a", "b")বাSets.newLinkedHashSet("a", "b")
Sets.newLinkedHashSet()সেই স্বাক্ষরের সাথে অস্তিত্ব নেই, দুঃখিত
Set<String> mySet = ImmutableSet.of("a", "b");
আপনি ব্যবহার করতে পারেন
new HashSet<String>(Arrays.asList("a","b"));
শূন্য বা এক সদস্যের সাথে সেটগুলির বিশেষ ক্ষেত্রে আপনি ব্যবহার করতে পারেন:
java.util.Collections.EMPTY_SET
এবং:
java.util.Collections.singleton("A")
java.util.Collections.emptySet()সুরক্ষার কারণে, আমার মনে, EMPTY_SET এর চেয়ে বেশি পছন্দ করা। সংগ্রহের ক্লাসে দেওয়া মন্তব্যগুলি থেকে:Unlike the like-named field, this method is parameterized.
অন্যরা যেমন বলেছে, ব্যবহার করুন:
new HashSet<String>(Arrays.asList("a","b"));
জাভাতে এটির অস্তিত্ব না থাকার কারণটি হ'ল Arrays.asListস্থির আকারের তালিকাটি দেয়, অন্য কথায়:
public static void main(String a[])
{
List<String> myList = Arrays.asList("a", "b");
myList.add("c");
}
রিটার্নস:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(Unknown Source)
at java.util.AbstractList.add(Unknown Source)
শ্রেণীর Setঅভ্যন্তরে কোনও "স্থির আকারের" জেডিকে প্রয়োগ নেই Arrays। আপনি এটি কেন চান? একটি Setগ্যারান্টি দেয় যে এখানে কোনও সদৃশ নেই, তবে আপনি যদি এগুলি হাত দ্বারা টাইপ করে থাকেন তবে আপনার সেই কার্যকারিতাটির দরকার নেই ... এবং Listআরও পদ্ধতি রয়েছে। উভয় ইন্টারফেস প্রসারিত Collectionএবং Iterable।
অন্যরা যেমন বলেছে, পেয়ারা ব্যবহার করুন যদি আপনি সত্যিই এই কার্যকারিতাটি চান - কারণ এটি জেডিকে নয়। এ সম্পর্কিত তথ্যের জন্য তাদের উত্তরগুলি দেখুন (বিশেষত মাইকেল শ্মিয়েরের উত্তর)।
জাভা 9 এ, কারখানা পদ্ধতিগুলির মাধ্যমে অনুরূপ ফাংশন যুক্ত করা হয়েছে:
Set<String> oneLinerSet = Set.of("a", "b", ...);
( Listপাশাপাশি সমতা আছে ।)
না তবে আপনি এটি এটি করতে পারেন
new HashSet<String>(Arrays.asList("a", "b", ...));
আপনি ব্যবহার করতে পারেন এখানে একটি ছোট পদ্ধতি
/**
* Utility method analogous to {@link java.util.Arrays#asList(Object[])}
*
* @param ts
* @param <T>
* @return the set of all the parameters given.
*/
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> Set<T> asSet(T... ts) {
return new HashSet<>(Arrays.asList(ts));
}
জাভা 8 এবং এনামগুলি ব্যবহার করে এটি করার আর একটি উপায় হ'ল:
Set<String> set = EnumSet.of(StandardOpenOption.CREATE, StandardOpenOption.READ);
এনামসেট দেখুন ।
আমি এই পদ্ধতির এবং এর মধ্যে পারফরম্যান্স বিশ্লেষণের প্রস্তাব দেব
Set<String> set = Stream.of(StandardOpenOption.CREATE, StandardOpenOption.READ).collect(Collectors.toSet());
কারণ যদি আপনার পাঁচটিরও বেশি উপাদান থাকে তবে পদ্ধতির জাভাদোকটি জানায় যে সেট.ওএফ (ই, ই ...) এর জাভাদকটিতে আপনি দেখতে পাচ্ছেন পারফরম্যান্সের সমস্যা ।