हम एक बनाते हैं Set
:
Set myset = new HashSet()
हम List
जावा में कैसे बना सकते हैं ?
हम एक बनाते हैं Set
:
Set myset = new HashSet()
हम List
जावा में कैसे बना सकते हैं ?
जवाबों:
List myList = new ArrayList();
या जेनरिक के साथ ( जावा 7 या बाद में)
List<MyType> myList = new ArrayList<>();
या जेनरिक के साथ (पुराने जावा संस्करण)
List<MyType> myList = new ArrayList<MyType>();
इसके अतिरिक्त, यदि आप एक ऐसी सूची बनाना चाहते हैं जिसमें चीजें हैं (हालांकि यह निश्चित आकार होगा):
List<String> messages = Arrays.asList("Hello", "World!", "How", "Are", "You");
मुझे संक्षेप में बताएं और कुछ जोड़ें:
1. new ArrayList<String>();
2. Arrays.asList("A", "B", "C")
1. Lists.newArrayList("Mike", "John", "Lesly");
2. Lists.asList("A","B", new String [] {"C", "D"});
अपरिवर्तनीय सूची
1. Collections.unmodifiableList(new ArrayList<String>(Arrays.asList("A","B")));
2. ImmutableList.builder() // Guava
.add("A")
.add("B").build();
3. ImmutableList.of("A", "B"); // Guava
4. ImmutableList.copyOf(Lists.newArrayList("A", "B", "C")); // Guava
खाली अपरिवर्तनीय सूची
1. Collections.emptyList();
2. Collections.EMPTY_LIST;
वर्ण की सूची
1. Lists.charactersOf("String") // Guava
2. Lists.newArrayList(Splitter.fixedLength(1).split("String")) // Guava
इंटेगर की सूची
Ints.asList(1,2,3); // Guava
Ints.asList
एक अपरिवर्तनीय सूची नहीं बनाता है, लेकिन एक निश्चित आकार की सूची दिए गए सरणी के सरणी (यानी यह समर्थन करता है List.set(int, Object)
) द्वारा समर्थित है । "चरित्रों की अपरिवर्तनीय सूची" का दूसरा उदाहरण या तो अपरिवर्तनीय नहीं है (मैं उस पंक्ति को हटा दूंगा)।
निश्चित आकार की एक गैर-रिक्त सूची बनाने के लिए (जैसे ऐड, निकालें, आदि जैसे ऑपरेशन समर्थित नहीं हैं):
List<Integer> list = Arrays.asList(1, 2); // but, list.set(...) is supported
एक गैर-रिक्त परिवर्तनशील सूची बनाने के लिए:
List<Integer> list = new ArrayList<>(Arrays.asList(3, 4));
एक नई List.of(...)
स्थिर फैक्टरी विधियों का उपयोग करना :
List<Integer> immutableList = List.of(1, 2);
List<Integer> mutableList = new ArrayList<>(List.of(3, 4));
स्थानीय परिवर्तनीय प्रकार का प्रयोग :
var list1 = List.of(1, 2);
var list2 = new ArrayList<>(List.of(3, 4));
var list3 = new ArrayList<String>();
और सर्वोत्तम प्रथाओं का पालन करें ...
जावा 5 के बाद से, जेनरिक भाषा का एक हिस्सा रहा है - आपको उनका उपयोग करना चाहिए:
List<String> list = new ArrayList<>(); // Good, List of String
List list = new ArrayList(); // Bad, don't do that!
उदाहरण के लिए, List
इंटरफ़ेस के लिए कार्यक्रम :
List<Double> list = new ArrayList<>();
के बजाय:
ArrayList<Double> list = new ArrayList<>(); // This is a bad idea!
सबसे पहले पढ़ा यह है, तो पढ़ इस और इस । 10 में से 9 बार आप उन दो कार्यान्वयनों में से एक का उपयोग करेंगे।
वास्तव में, बस Sun's Guide to the Collections फ्रेमवर्क पढ़ें ।
ArrayList
। यदि मैं केवल एक सूची के सिरों के साथ काम कर रहा हूं, तो यह एक छल (या कतार) है और मैं ArrayDeque
कार्यान्वयन का उपयोग करता हूं । कारण यह है कि भले ही सरणी-आधारित कार्यान्वयन है हो सकता है खाली स्लॉट पर कुछ स्मृति बर्बाद (जब मैं आवश्यक क्षमता का अनुमान नहीं लगा सकते हैं), छोटे संग्रहों के लिए इस एक लिंक की गई सूची में सभी नोड उदाहरणों में से भूमि के ऊपर के बराबर है है ( या छल)। और बदले में, मुझे यादृच्छिक अभिगम मिलता है। क्या अद्वितीय लाभ LinkedList
प्रदान करता है ?
//simple example creating a list form a string array
String[] myStrings = new String[] {"Elem1","Elem2","Elem3","Elem4","Elem5"};
List mylist = Arrays.asList(myStrings );
//getting an iterator object to browse list items
Iterator itr= mylist.iterator();
System.out.println("Displaying List Elements,");
while(itr.hasNext())
System.out.println(itr.next());
जावा 7 के बाद से आपके पास जेनेरिक इंस्टेंस क्रिएशन के लिए टाइप इंक्वायरी है , इसलिए असाइनमेंट के दायीं ओर जेनेरिक मापदंडों को डुप्लिकेट करने की कोई आवश्यकता नहीं है:
List<String> list = new ArrayList<>();
एक निश्चित आकार की सूची के रूप में परिभाषित किया जा सकता है:
List<String> list = Arrays.asList("foo", "bar");
अपरिवर्तनीय सूचियों के लिए आप अमरूद पुस्तकालय का उपयोग कर सकते हैं :
List<String> list = ImmutableList.of("foo", "bar");
सूची सिर्फ सेट के रूप में एक इंटरफ़ेस है ।
जैसे हैशसेट एक सेट का कार्यान्वयन है जिसमें प्रदर्शन को जोड़ने / देखने / हटाने के संबंध में कुछ गुण होते हैं, ArrayList एक सूची का नंगे कार्यान्वयन है।
यदि आपके पास संबंधित इंटरफेस के लिए प्रलेखन पर एक नज़र है, तो आपको "सभी ज्ञात कार्यान्वयन कक्षाएं" मिलेंगी और आप तय कर सकते हैं कि आपकी आवश्यकताओं के लिए कौन अधिक उपयुक्त है।
संभावना है कि यह ArrayList है ।
List
की तरह एक अंतरफलक है Set
और है ArrayList
और LinkedList
के रूप में सामान्य प्रयोजन कार्यान्वयन ।
हम सूची इस प्रकार बना सकते हैं:
List<String> arrayList = new ArrayList<>();
List<String> linkedList = new LinkedList<>();
हम एक निश्चित आकार की सूची भी बना सकते हैं:
List<String> list = Arrays.asList("A", "B", "C");
हम लगभग हमेशा कार्यान्वयन के ArrayList
विरोध का उपयोग करेंगे LinkedList
:
LinkedList
वस्तुओं के लिए बहुत सारे स्थान का उपयोग करता है और जब हमारे पास बहुत सारे तत्व होते हैं तो बुरी तरह से प्रदर्शन करता है।LinkedList
O (1) की तुलना में O (n) समय की आवश्यकता होती है ArrayList
।Arrays.asList
ऊपर बनाई गई सूची को संरचनात्मक रूप से संशोधित नहीं किया जा सकता है लेकिन इसके तत्वों को अभी भी संशोधित किया जा सकता है।
डॉक्टर के अनुसार , विधि Collections.unmodifiableList
निर्दिष्ट सूची का एक अपरिवर्तनीय दृश्य लौटाती है। हम इसे प्राप्त कर सकते हैं:
Collections.unmodifiableList(Arrays.asList("A", "B", "C"));
मामले में हम जावा 9 का उपयोग कर रहे हैं :
List<String> list = List.of("A", "B");
यदि हम जावा 10 में हैं, तो यह विधि Collectors.unmodifiableList
जावा 9 में वास्तव में मौजूद अपरिवर्तनीय सूची का एक उदाहरण लौटाएगी । बनाम जावा 10 में अंतर के बारे में अधिक जानकारी के लिए इस उत्तर को जांचें ।Collections.unmodifiableList
Collectors.unmodifiableList
कभी-कभी - लेकिन केवल बहुत ही कम - एक नए ArrayList के बजाय, आप एक नया लिंक्डलिस्ट चाहते हैं। ArrayList से शुरू करें और यदि आपके पास प्रदर्शन समस्याएं और सबूत हैं कि सूची समस्या है, और उस सूची में बहुत कुछ जोड़ने और हटाने - तब - इससे पहले नहीं - एक LinkedList पर स्विच करें और देखें कि क्या चीजें बेहतर होती हैं। लेकिन मुख्य में, ArrayList के साथ रहना और सब ठीक हो जाएगा।
List list = new ArrayList();
या जेनेरिक के साथ
List<String> list = new ArrayList<String>();
आप निश्चित रूप से किसी भी प्रकार के चर जैसे कि इंटेगर के साथ स्ट्रिंग को बदल सकते हैं।
एक उदाहरण:
List somelist = new ArrayList();
आप सूची के लिए javadoc को देख सकते हैं और List
जावा एपीआई के साथ शामिल किए गए इंटरफ़ेस के सभी ज्ञात कार्यान्वयन कक्षाएं पा सकते हैं।
Google संग्रह का उपयोग करके , आप सूचियों के वर्ग में निम्नलिखित विधियों का उपयोग कर सकते हैं
import com.google.common.collect.Lists;
// ...
List<String> strings = Lists.newArrayList();
List<Integer> integers = Lists.newLinkedList();
Varargs initialization और initializing from a के लिए ओवरलोड हैं Iterable<T>
।
इन विधियों का लाभ यह है कि आपको सामान्य पैरामीटर को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता नहीं है जैसा कि आप निर्माता के साथ करेंगे - कंपाइलर इसे चर के प्रकार से अनुमान लगाएगा।
जावा 8 के साथ एक ही काम करने के लिए अधिक विकल्प, बेहतर नहीं, बदतर नहीं, बस अलग और यदि आप सूचियों के साथ कुछ अतिरिक्त काम करना चाहते हैं, तो स्ट्रीम आपको अधिक विकल्प (फ़िल्टर, मानचित्र, कम करना, आदि) प्रदान करेंगे।
List<String> listA = Stream.of("a", "B", "C").collect(Collectors.toList());
List<Integer> listB = IntStream.range(10, 20).boxed().collect(Collectors.toList());
List<Double> listC = DoubleStream.generate(() -> { return new Random().nextDouble(); }).limit(10).boxed().collect(Collectors.toList());
LinkedList<Integer> listD = Stream.iterate(0, x -> x++).limit(10).collect(Collectors.toCollection(LinkedList::new));
एक विकल्प के रूप में आप यहां डबल ब्रेस इनिशियलाइज़ेशन का उपयोग कर सकते हैं:
List<String> list = new ArrayList<String>(){
{
add("a");
add("b");
}
};
सेट और सूची बनाने के कई तरीके हैं। हैशसेट और एरियर लिस्ट इसके दो उदाहरण हैं। इन दिनों संग्रह के साथ जेनरिक का उपयोग करना भी काफी आम है। मेरा सुझाव है कि आपके पास उन पर एक नज़र है
यह जावा के निर्मित संग्रह के लिए एक अच्छा परिचय है। http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
List arrList = new ArrayList();
इसके बेहतर आप नीचे दिए गए सुझाव के अनुसार जेनेरिक का उपयोग करें:
List<String> arrList = new ArrayList<String>();
arrList.add("one");
आप लिंक्डलिस्ट का उपयोग करें।
List<String> lnkList = new LinkedList<String>();
ग्रहण संग्रह का उपयोग करके आप एक सूची बना सकते हैं:
List<String> list1 = Lists.mutable.empty();
List<String> list2 = Lists.mutable.of("One", "Two", "Three");
यदि आप एक अपरिवर्तनीय सूची चाहते हैं:
ImmutableList<String> list3 = Lists.immutable.empty();
ImmutableList<String> list4 = Lists.immutable.of("One", "Two", "Three");
आप आदिम सूचियों का उपयोग करके ऑटो-बॉक्सिंग से बच सकते हैं। यहां बताया गया है कि आप इंट लिस्ट कैसे बनाएंगे:
MutableIntList list5 = IntLists.mutable.empty();
MutableIntList list6 = IntLists.mutable.of(1, 2, 3);
ImmutableIntList list7 = IntLists.immutable.empty();
ImmutableIntList list8 = IntLists.immutable.of(1, 2, 3);
सभी 8 प्राइमेट के लिए वेरिएंट हैं।
MutableLongList longList = LongLists.mutable.of(1L, 2L, 3L);
MutableCharList charList = CharLists.mutable.of('a', 'b', 'c');
MutableShortList shortList = ShortLists.mutable.of((short) 1, (short) 2, (short) 3);
MutableByteList byteList = ByteLists.mutable.of((byte) 1, (byte) 2, (byte) 3);
MutableBooleanList booleanList = BooleanLists.mutable.of(true, false);
MutableFloatList floatList = FloatLists.mutable.of(1.0f, 2.0f, 3.0f);
MutableDoubleList doubleList = DoubleLists.mutable.of(1.0, 2.0, 3.0);
नोट: मैं एक्लिप्स कलेक्शंस के लिए कमिट हूं।
निम्नलिखित कुछ तरीके हैं जिनसे आप सूची बना सकते हैं।
यह निश्चित आकार के साथ एक सूची बनाएगा, तत्वों को जोड़ना / हटाना संभव नहीं है, java.lang.UnsupportedOperationException
यदि आप ऐसा करने की कोशिश करते हैं तो यह फेंक देगा ।
List<String> fixedSizeList = Arrays.asList(new String[] {"Male", "Female"});
निम्नलिखित संस्करण एक सरल सूची है जहाँ आप किसी भी तत्व को जोड़ / हटा सकते हैं।
List<String> list = new ArrayList<>();
यह है कि LinkedList
जावा में एक बनाने के लिए , यदि आपको सूची में तत्वों को लगातार डालने / हटाने की आवश्यकता है, तो आपको LinkedList
इसके बजाय उपयोग करना चाहिएArrayList
List<String> linkedList = new LinkedList<>();
Arrays.asList("Male", "Female")
।
इसे इस्तेमाल करे:
List<String> messages = Arrays.asList("bla1", "bla2", "bla3");
या:
List<String> list1 = Lists.mutable.empty(); // Empty
List<String> list2 = Lists.mutable.of("One", "Two", "Three");
यदि आपको एक एकल इकाई के साथ क्रमबद्ध, अपरिवर्तनीय सूची की आवश्यकता है, जिसका आप उपयोग कर सकते हैं:
List<String> singList = Collections.singletonList("stackoverlow");
के रूप में जावा में सरणी सूची की घोषणा की तरह है
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
वहाँ कई तरह से आप जावा में सरणी सूची बना सकते हैं और आरंभ कर सकते हैं।
1) List list = new ArrayList();
2) List<type> myList = new ArrayList<>();
3) List<type> myList = new ArrayList<type>();
4) Using Utility class
List<Integer> list = Arrays.asList(8, 4);
Collections.unmodifiableList(Arrays.asList("a", "b", "c"));
5) Using static factory method
List<Integer> immutableList = List.of(1, 2);
6) Creation and initializing at a time
List<String> fixedSizeList = Arrays.asList(new String[] {"Male", "Female"});
Again you can create different types of list. All has their own characteristics
List a = new ArrayList();
List b = new LinkedList();
List c = new Vector();
List d = new Stack();
List e = new CopyOnWriteArrayList();