Java Language
वैकल्पिक संग्रह
खोज…
टिप्पणियों
अमरूद, अपाचे, ग्रहण से जावा संग्रह के बारे में यह विषय: मल्टीसेट, बैग, मल्टीमैप, इस परिवाद से बर्तन काम करता है।
Apache HashBag, Guava HashMultiset और ग्रहण हैशबैग
एक थैला / अल्टीसैट संग्रह की प्रत्येक वस्तु को घटनाओं की गणना के साथ संग्रहीत करता है। इंटरफ़ेस पर अतिरिक्त विधियाँ एक वस्तु की कई प्रतियों को एक साथ जोड़ने या निकालने की अनुमति देती हैं। JDK एनालॉग हैशप <टी, इंटेगर> है, जब मान इस कुंजी की प्रतियों की गणना करते हैं।
प्रकार | अमरूद | अपाचे कॉमन्स कलेक्शंस | जीएस कलेक्शन | JDK |
---|---|---|---|---|
आदेश परिभाषित नहीं है | HashMultiset | HashBag | HashBag | हैश मैप |
क्रमबद्ध | TreeMultiset | TreeBag | TreeBag | ट्री-मैप |
निवेशन-आदेश | LinkedHashMultiset | - | - | LinkedHashMap |
समवर्ती संस्करण | ConcurrentHashMultiset | SynchronizedBag | SynchronizedBag | Collections.synchronizedMap(HashMap<String, Integer>) |
समवर्ती और क्रमबद्ध | - | SynchronizedSortedBag | SynchronizedSortedBag | Collections.synchronizedSortedMap(TreeMap<String,Integer>) |
अचल संग्रह | ImmutableMultiset | UnmodifiableBag | UnmodifiableBag | Collections.unmodifiableMap(HashMap<String, Integer)] |
अपरिवर्तनीय और क्रमबद्ध | ImmutableSortedMultiset | UnmodifiableSortedBag | UnmodifiableSortedBag | Collections.unmodifiableSortedMap(TreeMap<String, Integer> |
उदाहरण :
1. Apache से सिंक्रोनाइज़्डस्ट्रैग का उपयोग करना :
// Parse text to separate words
String INPUT_TEXT = "Hello World! Hello All! Hi World!";
// Create Multiset
Bag bag = SynchronizedSortedBag.synchronizedBag(new TreeBag(Arrays.asList(INPUT_TEXT.split(" "))));
// Print count words
System.out.println(bag); // print [1:All!,2:Hello,1:Hi,2:World!]- in natural (alphabet) order
// Print all unique words
System.out.println(bag.uniqueSet()); // print [All!, Hello, Hi, World!]- in natural (alphabet) order
// Print count occurrences of words
System.out.println("Hello = " + bag.getCount("Hello")); // print 2
System.out.println("World = " + bag.getCount("World!")); // print 2
System.out.println("All = " + bag.getCount("All!")); // print 1
System.out.println("Hi = " + bag.getCount("Hi")); // print 1
System.out.println("Empty = " + bag.getCount("Empty")); // print 0
// Print count all words
System.out.println(bag.size()); //print 6
// Print count unique words
System.out.println(bag.uniqueSet().size()); //print 4
2. एक्लिप्स (GC) से ट्रीबैग का उपयोग करना :
// Parse text to separate words
String INPUT_TEXT = "Hello World! Hello All! Hi World!";
// Create Multiset
MutableSortedBag<String> bag = TreeBag.newBag(Arrays.asList(INPUT_TEXT.split(" ")));
// Print count words
System.out.println(bag); // print [All!, Hello, Hello, Hi, World!, World!]- in natural order
// Print all unique words
System.out.println(bag.toSortedSet()); // print [All!, Hello, Hi, World!]- in natural order
// Print count occurrences of words
System.out.println("Hello = " + bag.occurrencesOf("Hello")); // print 2
System.out.println("World = " + bag.occurrencesOf("World!")); // print 2
System.out.println("All = " + bag.occurrencesOf("All!")); // print 1
System.out.println("Hi = " + bag.occurrencesOf("Hi")); // print 1
System.out.println("Empty = " + bag.occurrencesOf("Empty")); // print 0
// Print count all words
System.out.println(bag.size()); //print 6
// Print count unique words
System.out.println(bag.toSet().size()); //print 4
3. अमरूद से LinkedHashMultiset का उपयोग करना :
// Parse text to separate words
String INPUT_TEXT = "Hello World! Hello All! Hi World!";
// Create Multiset
Multiset<String> multiset = LinkedHashMultiset.create(Arrays.asList(INPUT_TEXT.split(" ")));
// Print count words
System.out.println(multiset); // print [Hello x 2, World! x 2, All!, Hi]- in predictable iteration order
// Print all unique words
System.out.println(multiset.elementSet()); // print [Hello, World!, All!, Hi] - in predictable iteration order
// Print count occurrences of words
System.out.println("Hello = " + multiset.count("Hello")); // print 2
System.out.println("World = " + multiset.count("World!")); // print 2
System.out.println("All = " + multiset.count("All!")); // print 1
System.out.println("Hi = " + multiset.count("Hi")); // print 1
System.out.println("Empty = " + multiset.count("Empty")); // print 0
// Print count all words
System.out.println(multiset.size()); //print 6
// Print count unique words
System.out.println(multiset.elementSet().size()); //print 4
और ज्यादा उदाहरण:
I. अपाचे संग्रह:
- हैशबैग - ऑर्डर परिभाषित नहीं
- सिंक्रोनाइज़्डबग - समवर्ती और क्रम परिभाषित नहीं है
- सिंक्रोनाइज़्डस्ट्रैब - - समवर्ती और क्रमबद्ध क्रम
- ट्रीबाग - क्रमबद्ध क्रम
द्वितीय। जीएस / ग्रहण संग्रह
- MutableBag - आदेश परिभाषित नहीं
- MutableSortedBag - क्रमबद्ध क्रम
तृतीय। अमरूद
- HashMultiset - आदेश परिभाषित नहीं
- ट्रीमुलिसेट - क्रमबद्ध क्रम
- लिंक्डहाशमुल्टिसेट - प्रविष्टि क्रम
- समवर्ती HashMultiset - समवर्ती और क्रम परिभाषित नहीं है
अमरूद, अपाचे और ग्रहण संग्रह में मल्टीमैप
यह मल्टीपैप डुप्लिकेट की-वैल्यू पेयर को अनुमति देता है। JDK एनालॉग्स HashMap <K, सूची>, HashMap <K, सेट> और इतने पर हैं।
की का आदेश | मान का क्रम | डुप्लिकेट | एनालॉग कुंजी | अनुरूप मूल्य | अमरूद | अमरीका की एक मूल जनजाति | ग्रहण (जीएस) संग्रह | JDK |
---|---|---|---|---|---|---|---|---|
परिभाषित नहीं | निवेशन-आदेश | हाँ | हैश मैप | सारणी सूची | ArrayListMultimap | MultiValueMap | FastListMultimap | HashMap<K, ArrayList<V>> |
परिभाषित नहीं | परिभाषित नहीं | नहीं | हैश मैप | HashSet | HashMultimap | MultiValueMap. multiValueMap( new HashMap<K, Set>(), HashSet.class); | UnifiedSetMultimap | HashMap<K, HashSet<V>> |
परिभाषित नहीं | क्रमबद्ध | नहीं | हैश मैप | TreeSet | Multimaps. newMultimap( HashMap, Supplier <TreeSet>) | MultiValueMap.multiValueMap( new HashMap<K, Set>(), TreeSet.class) | TreeSortedSet- Multimap | HashMap<K, TreeSet<V>> |
निवेशन-आदेश | निवेशन-आदेश | हाँ | LinkedHashMap | सारणी सूची | LinkedListMultimap | MultiValueMap। multiValueMap (नया लिंक्डहाशप <K, सूची> (), ArrayList.class); | लिंक्डहाशप <<केरे, अरेलिस्ट> | |
निवेशन-आदेश | निवेशन-आदेश | नहीं | LinkedHashMap | LinkedHashSet | LinkedHashMultimap | MultiValueMap. multiValueMap(new LinkedHashMap<K, Set>(), LinkedHashSet.class) | LinkedHashMap<K, LinkedHashSet<V>> | |
क्रमबद्ध | क्रमबद्ध | नहीं | ट्री-मैप | TreeSet | TreeMultimap | MultiValueMap. multiValueMap( new TreeMap<K, Set>(),TreeSet.class) | TreeMap<K, TreeSet<V>> |
कार्य : पार्स "हैलो वर्ल्ड! नमस्ते ऑल! हाय वर्ल्ड!" शब्दों को अलग-अलग करने के लिए और मल्टीपर्पस (उदाहरण के लिए, हैलो = [0, 2], दुनिया! = [1, 5] और इसी तरह का उपयोग करके हर शब्द के सभी इंडेक्स को प्रिंट करें।
1. Apache से MultiValueMap
String INPUT_TEXT = "Hello World! Hello All! Hi World!";
// Parse text to words and index
List<String> words = Arrays.asList(INPUT_TEXT.split(" "));
// Create Multimap
MultiMap<String, Integer> multiMap = new MultiValueMap<String, Integer>();
// Fill Multimap
int i = 0;
for(String word: words) {
multiMap.put(word, i);
i++;
}
// Print all words
System.out.println(multiMap); // print {Hi=[4], Hello=[0, 2], World!=[1, 5], All!=[3]} - in random orders
// Print all unique words
System.out.println(multiMap.keySet()); // print [Hi, Hello, World!, All!] - in random orders
// Print all indexes
System.out.println("Hello = " + multiMap.get("Hello")); // print [0, 2]
System.out.println("World = " + multiMap.get("World!")); // print [1, 5]
System.out.println("All = " + multiMap.get("All!")); // print [3]
System.out.println("Hi = " + multiMap.get("Hi")); // print [4]
System.out.println("Empty = " + multiMap.get("Empty")); // print null
// Print count unique words
System.out.println(multiMap.keySet().size()); //print 4
2. GS / ग्रहण संग्रह से HashBiMap
String[] englishWords = {"one", "two", "three","ball","snow"};
String[] russianWords = {"jeden", "dwa", "trzy", "kula", "snieg"};
// Create Multiset
MutableBiMap<String, String> biMap = new HashBiMap(englishWords.length);
// Create English-Polish dictionary
int i = 0;
for(String englishWord: englishWords) {
biMap.put(englishWord, russianWords[i]);
i++;
}
// Print count words
System.out.println(biMap); // print {two=dwa, ball=kula, one=jeden, snow=snieg, three=trzy} - in random orders
// Print all unique words
System.out.println(biMap.keySet()); // print [snow, two, one, three, ball] - in random orders
System.out.println(biMap.values()); // print [dwa, kula, jeden, snieg, trzy] - in random orders
// Print translate by words
System.out.println("one = " + biMap.get("one")); // print one = jeden
System.out.println("two = " + biMap.get("two")); // print two = dwa
System.out.println("kula = " + biMap.inverse().get("kula")); // print kula = ball
System.out.println("snieg = " + biMap.inverse().get("snieg")); // print snieg = snow
System.out.println("empty = " + biMap.get("empty")); // print empty = null
// Print count word's pair
System.out.println(biMap.size()); //print 5
अमरूद से HashMultiMap
String INPUT_TEXT = "Hello World! Hello All! Hi World!"; // Parse text to words and index List<String> words = Arrays.asList(INPUT_TEXT.split(" ")); // Create Multimap Multimap<String, Integer> multiMap = HashMultimap.create(); // Fill Multimap int i = 0; for(String word: words) { multiMap.put(word, i); i++; } // Print all words System.out.println(multiMap); // print {Hi=[4], Hello=[0, 2], World!=[1, 5], All!=[3]} - keys and values in random orders // Print all unique words System.out.println(multiMap.keySet()); // print [Hi, Hello, World!, All!] - in random orders // Print all indexes System.out.println("Hello = " + multiMap.get("Hello")); // print [0, 2] System.out.println("World = " + multiMap.get("World!")); // print [1, 5] System.out.println("All = " + multiMap.get("All!")); // print [3] System.out.println("Hi = " + multiMap.get("Hi")); // print [4] System.out.println("Empty = " + multiMap.get("Empty")); // print [] // Print count all words System.out.println(multiMap.size()); //print 6 // Print count unique words System.out.println(multiMap.keySet().size()); //print 4
नोरे उदाहरण:
I. अपाचे संग्रह:
द्वितीय। जीएस / ग्रहण संग्रह
तृतीय। अमरूद
संग्रह के साथ संचालन की तुलना करें - संग्रह बनाएं
संग्रह के साथ संचालन की तुलना करें - संग्रह बनाएं
1. सूची बनाएँविवरण | JDK | अमरूद | gs-संग्रह |
---|---|---|---|
खाली सूची बनाएं | new ArrayList<> () | Lists.newArrayList() | FastList.newList() |
मूल्यों से सूची बनाएँ | Arrays.asList("1", "2", "3") | Lists.newArrayList("1", "2", "3") | FastList.newListWith("1", "2", "3") |
क्षमता = 100 के साथ सूची बनाएं | new ArrayList<>(100) | Lists.newArrayListWithCapacity(100) | FastList.newList(100) |
किसी भी संग्रह से सूची बनाएँ | new ArrayList<>(collection) | Lists.newArrayList(collection) | FastList.newList(collection) |
किसी भी Iterable से सूची बनाएं | - | Lists.newArrayList(iterable) | FastList.newList(iterable) |
Iterator से सूची बनाएं | - | Lists.newArrayList(iterator) | - |
सरणी से सूची बनाएँ | Arrays.asList(array) | Lists.newArrayList(array) | FastList.newListWith(array) |
फैक्टरी का उपयोग करके सूची बनाएं | - | - | FastList.newWithNValues(10, () -> "1") |
उदाहरण:
System.out.println("createArrayList start");
// Create empty list
List<String> emptyGuava = Lists.newArrayList(); // using guava
List<String> emptyJDK = new ArrayList<>(); // using JDK
MutableList<String> emptyGS = FastList.newList(); // using gs
// Create list with 100 element
List < String > exactly100 = Lists.newArrayListWithCapacity(100); // using guava
List<String> exactly100JDK = new ArrayList<>(100); // using JDK
MutableList<String> empty100GS = FastList.newList(100); // using gs
// Create list with about 100 element
List<String> approx100 = Lists.newArrayListWithExpectedSize(100); // using guava
List<String> approx100JDK = new ArrayList<>(115); // using JDK
MutableList<String> approx100GS = FastList.newList(115); // using gs
// Create list with some elements
List<String> withElements = Lists.newArrayList("alpha", "beta", "gamma"); // using guava
List<String> withElementsJDK = Arrays.asList("alpha", "beta", "gamma"); // using JDK
MutableList<String> withElementsGS = FastList.newListWith("alpha", "beta", "gamma"); // using gs
System.out.println(withElements);
System.out.println(withElementsJDK);
System.out.println(withElementsGS);
// Create list from any Iterable interface (any collection)
Collection<String> collection = new HashSet<>(3);
collection.add("1");
collection.add("2");
collection.add("3");
List<String> fromIterable = Lists.newArrayList(collection); // using guava
List<String> fromIterableJDK = new ArrayList<>(collection); // using JDK
MutableList<String> fromIterableGS = FastList.newList(collection); // using gs
System.out.println(fromIterable);
System.out.println(fromIterableJDK);
System.out.println(fromIterableGS);
/* Attention: JDK create list only from Collection, but guava and gs can create list from Iterable and Collection */
// Create list from any Iterator
Iterator<String> iterator = collection.iterator();
List<String> fromIterator = Lists.newArrayList(iterator); // using guava
System.out.println(fromIterator);
// Create list from any array
String[] array = {"4", "5", "6"};
List<String> fromArray = Lists.newArrayList(array); // using guava
List<String> fromArrayJDK = Arrays.asList(array); // using JDK
MutableList<String> fromArrayGS = FastList.newListWith(array); // using gs
System.out.println(fromArray);
System.out.println(fromArrayJDK);
System.out.println(fromArrayGS);
// Create list using fabric
MutableList<String> fromFabricGS = FastList.newWithNValues(10, () -> String.valueOf(Math.random())); // using gs
System.out.println(fromFabricGS);
System.out.println("createArrayList end");
2 सेट बनाएं विवरण | JDK | अमरूद | gs-संग्रह |
---|---|---|---|
खाली सेट बनाएं | new HashSet<>() | Sets.newHashSet() | UnifiedSet.newSet() |
मानों से सृजित सेट | new HashSet<>(Arrays.asList("alpha", "beta", "gamma") ) | Sets.newHashSet("alpha", "beta", "gamma") | UnifiedSet.newSetWith("alpha", "beta", "gamma") |
किसी भी संग्रह से सेट बनाएं | new HashSet<>(collection) | Sets.newHashSet(collection) | UnifiedSet.newSet(collection) |
किसी भी Iterable से सेट बनाएं | - | Sets.newHashSet(iterable) | UnifiedSet.newSet(iterable) |
किसी भी Iterator से सेट बनाएं | - | Sets.newHashSet(iterator) | - |
ऐरे से सेट बनाएँ | new HashSet<>(Arrays.asList(array)) | Sets.newHashSet(array) | UnifiedSet.newSetWith(array) |
उदाहरण:
System.out.println("createHashSet start");
// Create empty set
Set<String> emptyGuava = Sets.newHashSet(); // using guava
Set<String> emptyJDK = new HashSet<>(); // using JDK
Set<String> emptyGS = UnifiedSet.newSet(); // using gs
// Create set with 100 element
Set<String> approx100 = Sets.newHashSetWithExpectedSize(100); // using guava
Set<String> approx100JDK = new HashSet<>(130); // using JDK
Set<String> approx100GS = UnifiedSet.newSet(130); // using gs
// Create set from some elements
Set<String> withElements = Sets.newHashSet("alpha", "beta", "gamma"); // using guava
Set<String> withElementsJDK = new HashSet<>(Arrays.asList("alpha", "beta", "gamma")); // using JDK
Set<String> withElementsGS = UnifiedSet.newSetWith("alpha", "beta", "gamma"); // using gs
System.out.println(withElements);
System.out.println(withElementsJDK);
System.out.println(withElementsGS);
// Create set from any Iterable interface (any collection)
Collection<String> collection = new ArrayList<>(3);
collection.add("1");
collection.add("2");
collection.add("3");
Set<String> fromIterable = Sets.newHashSet(collection); // using guava
Set<String> fromIterableJDK = new HashSet<>(collection); // using JDK
Set<String> fromIterableGS = UnifiedSet.newSet(collection); // using gs
System.out.println(fromIterable);
System.out.println(fromIterableJDK);
System.out.println(fromIterableGS);
/* Attention: JDK create set only from Collection, but guava and gs can create set from Iterable and Collection */
// Create set from any Iterator
Iterator<String> iterator = collection.iterator();
Set<String> fromIterator = Sets.newHashSet(iterator); // using guava
System.out.println(fromIterator);
// Create set from any array
String[] array = {"4", "5", "6"};
Set<String> fromArray = Sets.newHashSet(array); // using guava
Set<String> fromArrayJDK = new HashSet<>(Arrays.asList(array)); // using JDK
Set<String> fromArrayGS = UnifiedSet.newSetWith(array); // using gs
System.out.println(fromArray);
System.out.println(fromArrayJDK);
System.out.println(fromArrayGS);
System.out.println("createHashSet end");
3 नक्शा बनाएँ विवरण | JDK | अमरूद | gs-संग्रह |
---|---|---|---|
खाली नक्शा बनाएं | new HashMap<>() | Maps.newHashMap() | UnifiedMap.newMap() |
क्षमता = 130 के साथ नक्शा बनाएँ | new HashMap<>(130) | Maps.newHashMapWithExpectedSize(100) | UnifiedMap.newMap(130) |
अन्य मानचित्र से मानचित्र बनाएँ | new HashMap<>(map) | Maps.newHashMap(map) | UnifiedMap.newMap(map) |
चाबी से नक्शा बनाएं | - | - | UnifiedMap.newWithKeysValues("1", "a", "2", "b") |
उदाहरण:
System.out.println("createHashMap start");
// Create empty map
Map<String, String> emptyGuava = Maps.newHashMap(); // using guava
Map<String, String> emptyJDK = new HashMap<>(); // using JDK
Map<String, String> emptyGS = UnifiedMap.newMap(); // using gs
// Create map with about 100 element
Map<String, String> approx100 = Maps.newHashMapWithExpectedSize(100); // using guava
Map<String, String> approx100JDK = new HashMap<>(130); // using JDK
Map<String, String> approx100GS = UnifiedMap.newMap(130); // using gs
// Create map from another map
Map<String, String> map = new HashMap<>(3);
map.put("k1","v1");
map.put("k2","v2");
Map<String, String> withMap = Maps.newHashMap(map); // using guava
Map<String, String> withMapJDK = new HashMap<>(map); // using JDK
Map<String, String> withMapGS = UnifiedMap.newMap(map); // using gs
System.out.println(withMap);
System.out.println(withMapJDK);
System.out.println(withMapGS);
// Create map from keys
Map<String, String> withKeys = UnifiedMap.newWithKeysValues("1", "a", "2", "b");
System.out.println(withKeys);
System.out.println("createHashMap end");
अधिक उदाहरण: CreateCollectionTest