আমরা একটি 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
কোনও অপরিবর্তনীয় তালিকা তৈরি করে না, তবে একটি নির্দিষ্ট আকারের তালিকা প্রদত্ত ints (যেমন এটি সমর্থন করে 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>();
এবং সেরা অনুশীলনগুলি অনুসরণ করুন ...
জাভা ৫ এর পর থেকে জেনেরিক ভাষার অংশ হয়ে গেছে - আপনার এগুলি ব্যবহার করা উচিত:
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 বার আপনি এই দুটি প্রয়োগের একটি ব্যবহার করবেন।
বস্তুত, শুধু পড়া সংগ্রহগুলি ফ্রেমওয়ার্ক থেকে সূর্যের গাইড ।
ArrayList
। যদি আমি কেবল একটি তালিকার শেষের সাথে কাজ করি তবে এটি একটি প্রাসঙ্গিক (বা সারি) এবং আমি ArrayDeque
প্রয়োগটি ব্যবহার করি । কারণটি হ'ল যদিও অ্যারে-ভিত্তিক প্রয়োগগুলি খালি স্লটগুলিতে কিছু মেমরি নষ্ট করতে পারে (যখন আমি প্রয়োজনীয় সক্ষমতা অনুমান করতে পারি না), ছোট সংগ্রহগুলির জন্য এটি একটি লিঙ্কযুক্ত তালিকার সমস্ত নোড উদাহরণগুলির ওভারহেডের সাথে তুলনীয় ( বা deque)। এবং বিনিময়ে, আমি এলোমেলো অ্যাক্সেস পাই। কি অনন্য সুবিধা 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");
তালিকা ঠিক যেমন একটি ইন্টারফেস সেট ।
হ্যাশসেটটি এমন একটি সেট এর বাস্তবায়ন যা কার্য সম্পাদন / প্রদর্শন / সরানোর ক্ষেত্রে নির্দিষ্ট বৈশিষ্ট্যযুক্ত, অ্যারেলিস্ট একটি তালিকার খালি বাস্তবায়ন।
যদি আপনার সম্পর্কিত ইন্টারফেসগুলির জন্য ডকুমেন্টেশনগুলির দিকে নজর থাকে তবে আপনি "সমস্ত জ্ঞাত বাস্তবায়নকারী শ্রেণি" খুঁজে পাবেন এবং কোনটি আপনার প্রয়োজনের জন্য বেশি উপযুক্ত তা আপনি সিদ্ধান্ত নিতে পারেন।
সম্ভাবনা হ'ল এটি অ্যারেলিস্ট ।
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
ও (1) এর তুলনায় ও (এন) সময় প্রয়োজন ArrayList
।Arrays.asList
উপরে তৈরি তালিকাটি কাঠামোগতভাবে সংশোধন করা যায় না তবে এর উপাদানগুলি এখনও সংশোধন করা যায়।
অনুযায়ী ডক , পদ্ধতি Collections.unmodifiableList
নির্দিষ্ট করা তালিকা একজন unmodifiable দৃশ্য ফেরৎ। আমরা এটি পেতে পারি:
Collections.unmodifiableList(Arrays.asList("A", "B", "C"));
যদি আমরা তখন জাভা 9 ব্যবহার করি তবে:
List<String> list = List.of("A", "B");
ক্ষেত্রে আমরা জাভা 10 তারপর পদ্ধতি Collectors.unmodifiableList
জাভা চালু সত্যিই unmodifiable তালিকার একটি দৃষ্টান্ত ফিরে আসবে 9. এই চেক উত্তর পার্থক্য সম্পর্কে আরও তথ্যের জন্য Collections.unmodifiableList
বনাম Collectors.unmodifiableList
মধ্যে জাভা 10 ।
কখনও কখনও - তবে কেবল খুব কমই - নতুন অ্যারেলিস্টের পরিবর্তে আপনি একটি নতুন লিংকডলিস্ট চাইতে পারেন। অ্যারেলিস্ট দিয়ে শুরু করুন এবং যদি আপনার কার্য সম্পাদনের সমস্যা এবং প্রমাণ রয়েছে যে তালিকাটি সমস্যা, এবং সেই তালিকাতে প্রচুর পরিমাণে যুক্ত এবং মুছে ফেলা - তবে - আগে নয় - একটি লিঙ্কলিস্টে স্যুইচ করুন এবং দেখুন যে জিনিসগুলি উন্নতি করছে কিনা। তবে প্রধানত, অ্যারেলিস্টের সাথে লেগে থাকুন এবং সব ঠিক হয়ে যাবে।
List list = new ArrayList();
বা জেনেরিক সহ
List<String> list = new ArrayList<String>();
আপনি অবশ্যই অবশ্যই কোনও ধরণের ভেরিয়েবল, যেমন পূর্ণসংখ্যার সাথে স্ট্রিং প্রতিস্থাপন করতে পারেন।
একটি উদাহরণ:
List somelist = new ArrayList();
আপনি তালিকার জন্য জাভাদোকটি দেখতে পারেন এবং জাভা এপিআইয়েরList
সাথে অন্তর্ভুক্ত ইন্টারফেসের সমস্ত পরিচিত প্রয়োগকারী ক্লাসগুলি পেতে পারেন ।
গুগল সংগ্রহগুলি ব্যবহার করে , আপনি তালিকা শ্রেণিতে নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করতে পারেন
import com.google.common.collect.Lists;
// ...
List<String> strings = Lists.newArrayList();
List<Integer> integers = Lists.newLinkedList();
ভার থেকে আরম্ভের জন্য ও থেকে আরম্ভ করার জন্য ওভারলোড রয়েছে 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));
জাভা 9, আপনি একটি তৈরি করতে নিম্নোক্ত কাজ করতে সক্ষম অপরিবর্তনীয় List
:
List<Integer> immutableList = List.of(1, 2, 3, 4, 5);
List<Integer> mutableList = new ArrayList<>(immutableList);
বিকল্প হিসাবে আপনি এখানে ডাবল ব্রেস সূচনা ব্যবহার করতে পারেন:
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>();
Eclipse সংগ্রহ ব্যবহার করে আপনি এর মতো একটি তালিকা তৈরি করতে পারেন:
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();