java - জাভা প্রোগ্রামিং pdf




কিভাবে একটি অ্যারে জাভা একটি সেট রূপান্তর (12)

আমি একটি অ্যারে জাভা একটি সেট রূপান্তর করতে চাই। এটি করার কিছু সুস্পষ্ট উপায় রয়েছে (অর্থাত একটি লুপ সহ) তবে আমি কিছুটা নিরপেক্ষ কিছু চাই, যেমন:

java.util.Arrays.asList(Object[] a);

কোন ধারনা?


জাভা 8

আমরা পাশাপাশি Stream ব্যবহার করার অপশন আছে। আমরা বিভিন্ন উপায়ে প্রবাহ পেতে পারেন:

Set<String> set = Stream.of("A", "B", "C", "D").collect(Collectors.toCollection(HashSet::new));
System.out.println(set);

String[] stringArray = {"A", "B", "C", "D"};
Set<String> strSet1 = Arrays.stream(stringArray).collect(Collectors.toSet());
System.out.println(strSet1);

// if you need HashSet then use below option.
Set<String> strSet2 = Arrays.stream(stringArray).collect(Collectors.toCollection(HashSet::new));
System.out.println(strSet2);

Collectors.toSet() এর উত্স কোডটি দেখায় যে উপাদানগুলিকে HashSet একের মধ্যে এক জোড়া করা হয়েছে তবে স্পেসিফিকেশন গ্যারান্টিযুক্ত নয় বলে গ্যারান্টি দেয় না।

"টাইপ, পরিবর্তনযোগ্যতা, সিরিয়ালাইজেসিবিলিটি বা সেটের থ্রেড-নিরাপত্তা কোন গ্যারান্টী নেই।"

সুতরাং পরবর্তী বিকল্পটি ব্যবহার করা ভাল। আউটপুট হল: [A, B, C, D] [A, B, C, D] [A, B, C, D]

অপ্রয়োজনীয় সেট (জাভা 9)

জাভা 9 সেট স্ট্যাটিক ফ্যাক্টরি পদ্ধতি সেট করে যা প্রদান করা উপাদান বা অ্যারের জন্য অপরিবর্তনীয় সেট প্রদান করে।

@SafeVarargs
static <E> Set<E> of​(E... elements)

বিস্তারিত জানার জন্য অপ্রয়োজনীয় সেট স্ট্যাটিক ফ্যাক্টরী পদ্ধতি পরীক্ষা করুন।

অপ্রয়োজনীয় সেট (জাভা 10)

আমরা দুটি উপায়ে একটি অপ্রয়োজনীয় সেট পেতে পারি:

  1. Set.copyOf(Arrays.asList(array))
  2. Arrays.stream(array).collect(Collectors.toUnmodifiableList());

পদ্ধতি Collectors.toUnmodifiableList() অভ্যন্তরীণভাবে জাভা 9 এ উপস্থাপিত Set.of ব্যবহার করে। এছাড়াও আরো তথ্যের জন্য আমার এই answer চেক করুন।


আপনি Arrays.asList(array) করার পরে আপনি Set set = new HashSet(list); চালাতে পারেন Set set = new HashSet(list);

এখানে একটি নমুনা পদ্ধতি, আপনি লিখতে পারেন:

public <T> Set<T> GetSetFromArray(T[] array) {
    return new HashSet<T>(Arrays.asList(array));
}

ইতিমধ্যে অনেক মহান উত্তর হয়েছে, কিন্তু তাদের অধিকাংশই প্রাইমাইটিভের অ্যারে ( int[] , byte[] , long[] , char[] , ইত্যাদি দিয়ে কাজ করবে না)

জাভা 8 এবং তারপরে, অ্যারের মতো কিছু দিয়ে বক্স করুন:

Integer[] boxedArr = Arrays.stream(arr).boxed().toArray(Integer[]::new);

তারপর একটি সহজ প্রবাহ সেট করতে এটি রূপান্তর করতে পারেন:

Stream.of(boxedArr).collect(Collectors.toSet());

এটার মত:

Set<T> mySet = new HashSet<T>(Arrays.asList(someArray));

জাভা 9+ এ, যদি বিন্যস্ত সেটটি ঠিক থাকে তবে:

Set<T> mySet = Set.of(someArray);

জাভা 10+ এ, জেনেরিক টাইপ প্যারামিটারটি অ্যারে উপাদান টাইপ থেকে অনুমিত হতে পারে:

var mySet = Set.of(someArray);

জাভা 8:

String[] strArray = {"eins", "zwei", "drei", "vier"};

Set<String> strSet = Arrays.stream(strArray).collect(Collectors.toSet());
System.out.println(strSet);
// [eins, vier, zwei, drei]

দ্রুত: আপনি করতে পারেন:

// Fixed-size list
List list = Arrays.asList(array);

// Growable list
list = new LinkedList(Arrays.asList(array));

// Duplicate elements are discarded
Set set = new HashSet(Arrays.asList(array));

এবং বিপরীত

// Create an array containing the elements in a list
Object[] objectArray = list.toArray();
MyClass[] array = (MyClass[])list.toArray(new MyClass[list.size()]);

// Create an array containing the elements in a set
objectArray = set.toArray();
array = (MyClass[])set.toArray(new MyClass[set.size()]);

Guava আপনি করতে পারেন:

T[] array = ...
Set<T> set = Sets.newHashSet(array);

Eclipse সংগ্রহগুলি , নিম্নলিখিত কাজ করবে:

Set<Integer> set1 = Sets.mutable.of(1, 2, 3, 4, 5);
Set<Integer> set2 = Sets.mutable.of(new Integer[]{1, 2, 3, 4, 5});
MutableSet<Integer> mutableSet = Sets.mutable.of(1, 2, 3, 4, 5);
ImmutableSet<Integer> immutableSet = Sets.immutable.of(1, 2, 3, 4, 5);

Set<Integer> unmodifiableSet = Sets.mutable.of(1, 2, 3, 4, 5).asUnmodifiable();
Set<Integer> synchronizedSet = Sets.mutable.of(1, 2, 3, 4, 5).asSynchronized();
ImmutableSet<Integer> immutableSet = Sets.mutable.of(1, 2, 3, 4, 5).toImmutable();

নোট: আমি গ্রহনযোগ্য সংগ্রহের জন্য একটি কমিটার


stanford-postagger-3.0.jar ArrayUtils থেকে ArrayUtils বা ArrayUtils ব্যবহার করুন

import static edu.stanford.nlp.util.ArrayUtils.asSet;
or 
import static edu.stanford.nlp.util.CollectionUtils.asSet;

  ...
String [] array = {"1", "q"};
Set<String> trackIds = asSet(array);

জাভা 10 :

String[] strs = {"A", "B"};
Set<String> set = Set.copyOf(Arrays.asList(strs));

Set Set.copyOf প্রদত্ত Collection উপাদান ধারণকারী একটি unmodifiable Set ফেরত।

দেওয়া Collection null হতে হবে না এবং এটিতে কোনও null উপাদান থাকতে হবে না।


Set<T> b = new HashSet<>(Arrays.asList(requiredArray));

Set<T> mySet = new HashSet<T>();
Collections.addAll(mySet, myArray);

যে JDK 6 থেকে Collections.addAll (java.util.Collection, টি ...)

উপরন্তু: আমাদের অ্যারে Primitives পূর্ণ হলে কি?

JDK <8 এর জন্য, আমি শুধু লুপের জন্য মোড়ানো এবং এক পাসে অ্যাড-টু-সেট করতে স্পষ্ট লিখি।

JDK> = 8 এর জন্য, একটি আকর্ষণীয় বিকল্পটি হল:

Arrays.stream(intArray).boxed().collect(Collectors.toSet());






set