আদিম কোন তালিকা তৈরি করবেন?


97

নীচের মতো জাভাতে আদিম অন্ত বা কোন আদিমদের একটি তালিকা তৈরি করার কোনও উপায় আছে?

List<int> myList = new ArrayList<int>();

মনে হয় আমি করতে পারি List myList = new ArrayList();

এবং এই তালিকায় "int" যুক্ত করুন। তবে এর অর্থ হ'ল আমি এই তালিকায় কিছু যুক্ত করতে পারি।

আমার একমাত্র বিকল্প, কোন int এর অ্যারে তৈরি করে এটিকে একটি তালিকায় রূপান্তর করা বা পূর্ণসংখ্যার অবজেক্টের একটি তালিকা তৈরি করা?


পারফরম্যান্স যদি আপনার উদ্বেগ হয় তবে ট্রভের সহায়তা করা উচিত।
Assylias

বেসিক অ্যারে ব্যবহার করে একটি তালিকা তৈরি করা সম্ভব, তবে আপনাকে শুরু করতে অ্যারের আকারটি জানতে হবে এবং সংগ্রহের অবজেক্টের সাথে আসে এমন অনেকগুলি কার্যকারিতা হারাবেন। তবে আপনি এর মতো কিছু করতে পারেন: int [] অ্যারে = নতুন ইন [10];
টেলর

উত্তর:


144

জাভাতে যে কোনও ভেরিয়েবলের টাইপ হয় আদিম টাইপ বা একটি রেফারেন্স টাইপ। জেনেরিক ধরণের আর্গুমেন্ট অবশ্যই রেফারেন্স প্রকারের হতে হবে। যেহেতু আদিমাগুলি প্রসারিত Objectকরে না সেগুলি প্যারামাইট্রাইজড ধরণের জন্য জেনেরিক ধরণের আর্গুমেন্ট হিসাবে ব্যবহার করা যায় না।

পরিবর্তে Integerক্লাসটি ব্যবহার করুন যা একটি মোড়কের জন্য int:

List<Integer> list = new ArrayList<Integer>();

আপনি যদি জাভা 7 ব্যবহার করে থাকেন তবে আপনি ডায়মন্ড অপারেটর ব্যবহার করে এই ঘোষণাকে সহজ করতে পারেন:

List<Integer> list = new ArrayList<>();

জাভাতে অটোবক্সিংয়ের সাথে আদিম প্রকারটি যখন প্রয়োজন intহবে তখন পরিণত হবে Integer

অটোবক্সিং হ'ল স্বয়ংক্রিয় রূপান্তর যা জাভা সংকলক আদিম ধরণের এবং তাদের সংশ্লিষ্ট অবজেক্ট র‌্যাপার ক্লাসগুলির মধ্যে তৈরি করে।

সুতরাং নিম্নলিখিতটি বৈধ:

int myInt = 1;
List<Integer> list = new ArrayList<Integer>();
list.add(myInt);

System.out.println(list.get(0)); //prints 1

4
সুতরাং জেটিবেল পদ্ধতিটি সেটলেক্টইন্ডিক্সগুলি একটি অজ্ঞানবহুল
javase

25

জাভা সংগ্রহ ফ্রেমওয়ার্ক ব্যবহার করা হচ্ছে এমন কোনও সংগ্রহ নেই যা আদিম ধরণের থাকতে পারে।

তবে অন্যান্য জাভা সংগ্রহগুলি আদিম প্রকারকে সমর্থন করে যেমন: ট্রোভ , কোল্ট , ফাস্টুটিল , পেয়ারা

যখন ট্রভ লাইব্রেরি ব্যবহৃত হয় তখন কীভাবে ইনটগুলির সাথে অ্যারেলিস্ট হবে তার একটি উদাহরণ:

 TIntArrayList list= new TIntArrayList();

এই তালিকাটির কার্য সম্পাদন যখন জাভা সংগ্রহগুলি থেকে অ্যারেলিস্ট অফ ইন্টিজার্সের সাথে তুলনা করা হয় ততটা ভাল কারণ সংশ্লিষ্ট ইন্টিজার রেপার ক্লাসে অটোবক্সিং / আনবক্সিংয়ের প্রয়োজন হয় না।


4
আমি পেয়ারাতে কোনও আদিম সংগ্রহ বাস্তবায়ন পাইনি। আপনি একটি লিঙ্ক প্রদান করতে পারেন দয়া করে?
নিমক্যাপ

9

জাভাতে আদিম অন্ত বা কোন আদিমদের একটি তালিকা তৈরি করার উপায় আছে কি?

না আপনি পারবেন না। আপনি শুধুমাত্র রেফারেন্স ধরনের, মত তালিকা তৈরি করতে পারেন Integer, Stringঅথবা আপনার কাস্টম প্রকার।

দেখে মনে হচ্ছে আমি List myList = new ArrayList();এই তালিকায় "int" করতে এবং যুক্ত করতে পারি ।

intআপনি এই তালিকায় যুক্ত করার পরে এটি স্বয়ংক্রিয়ভাবে Integerমোড়কের ধরণে বক্স হয়ে যায় । তবে নতুন কোডে কাঁচা ধরণের তালিকা বা যে কোনও জেনেরিক টাইপের জন্য ব্যবহার করা খারাপ ধারণা ।

আমি এই তালিকায় কিছু যোগ করতে পারি।

অবশ্যই, এটি কাঁচা টাইপ ব্যবহারের ডিস-সুবিধা। আপনার কাছে একটি কন্টেইনারে ক্যাট , কুকুর , টাইগার , ডাইনোসর থাকতে পারে

আমার একমাত্র বিকল্প, int এর অ্যারে তৈরি করে এটিকে তালিকায় রূপান্তর করা

সেক্ষেত্রে আপনিও List<Integer>একমাত্র পাবেন। আপনি তৈরি করার কোনও উপায় List<int>বা কোনও আদিম নেই is

যাইহোক আপনাকে বিরক্ত করা উচিত নয়। এমনকি আপনি আদিম ধরণের List<Integer>যুক্ত করতে পারেন int। এটি স্বয়ংক্রিয়ভাবে বক্স করা হবে, যেমন নীচের উদাহরণ হিসাবে:

List<Integer> list = new ArrayList<Integer>();
list.add(5);

কাঁচা টাইপ সম্পর্কে ভাল আলোচনা।
কেভিন বোয়ারসক্স 16 ই

প্রকৃতপক্ষে, স্পষ্ট করে বলতে গেলে, আপনি কেবলমাত্র একটি প্রাথমিক অ্যারে ব্যবহার করে আদিম ধরণের সাথে একটি তালিকা তৈরি করতে পারেন। int [] অ্যারে = নতুন ইনট [10];
টেলর

4
@ টেলর তবে এটি গতিশীলভাবে বাড়ছে না তালিকা। এটি একটি অ্যারে। এবং আমি ধরে নিই যে ওপি ইতিমধ্যে এটি সম্পর্কে জানতে হবে।
রোহিত জৈন

6

অ্যাপাচি ফ্রেমওয়ার্ক থেকে অ্যারেআইন্টলিস্ট ব্যবহার করার চেষ্টা করুন। এটি একেবারে অ্যারেলিস্টের মতো কাজ করে, বাদে এটি আদিম অন্তর্ভুক্ত রাখতে পারে।

আরও বিশদ এখানে -

https://commons.apache.org/dormant/commons-primitives/apidocs/org/apache/commons/collections/primitives/ArrayIntList.html


5

এইটা সম্ভব না. জবা স্পেসিফিকেশন জেনেরিকসে আদিম ব্যবহার নিষিদ্ধ করে। যাইহোক, আপনি বক্সিং তৈরির কোনও আন্তঃ ধন্যবাদ থাকলে তৈরি ArrayList<Integer>এবং কল করতে পারেন ।add(i)i


4

আপনি ইলিপস সংগ্রহে উপলভ্য আদিম সংগ্রহগুলি ব্যবহার করতে পারেন । অন্ধকার সংগ্রহ নেই List, Set, Bagএবং Mapসব প্রিমিটিভের জন্য। আদিম সংগ্রহগুলির উপাদানগুলি আদিম হিসাবে বজায় থাকে এবং কোনও বক্সিং হয় না।

আপনি এটির মতো একটি অন্তর্ভুক্তি শুরু করতে পারেন :

MutableIntList ints = IntLists.mutable.empty();

আপনি এটি থেকে একটিতে রূপান্তর List<Integer>করতে IntListপারেন:

List<Integer> integers = new ArrayList<>();
MutableIntList ints = ListAdapter.adapt(integers).collectInt(each -> each);

দ্রষ্টব্য: আমি গ্রহন গ্রাহক সংগ্রহের একজন সহযোগী।


3

সংগ্রহগুলি জেনেরিকগুলি ব্যবহার করে যা রেফারেন্স প্রকার বা উইলকার্ডগুলিকে সমর্থন করে । তবে আপনি একটি Integerমোড়ক ব্যবহার করতে পারেন

List<Integer> list = new ArrayList<>();

0

আপনি যখন অ্যান্ড্রয়েড বিকাশের জন্য জাভা ব্যবহার করেন, তখন এবং এর SparseIntArrayমধ্যে অটোবক্সিং প্রতিরোধ করার জন্য এটি ব্যবহার করার পরামর্শ দেওয়া হয় ।intInteger

আপনি আরও তথ্য finde করতে SparseIntArrayমধ্যে অ্যান্ড্রয়েড ডেভেলপারগণ ডকুমেন্টেশন এবং Android এর উপর autoboxing একটি ভাল ব্যাখ্যা এখানে লিংক বর্ণনা লিখুন


এটি একটি শক্ত বক্তব্য। অবশ্যই SparseIntArrayপ্রায়শই একটি ভাল বিকল্প, তবে সচেতন হওয়ার মতো ট্রেড অফ রয়েছে। "বাস্তবায়ন ডাটা স্ট্রাকচার আইটেম বৃহৎ সংখ্যক থাকতে পারে জন্য উপযুক্ত হতে উদ্দেশ্যে তাই না একটি ঐতিহ্যগত HashMap চেয়ে সাধারণত মন্থর হচ্ছে ...।"
অ্যান্ডি থমাস

হ্যা, এটা সত্য. আমার লিঙ্কযুক্ত ভিডিওতে তারা এই ট্রেডফর্মটি বেশ ভালভাবে কভার করে। তবে ওপি সেই বিশেষ সম্ভাবনার জন্য জিজ্ঞাসা করেছিল এবং আমি কেবল যুক্ত করতে চেয়েছিলাম যে এটি অ্যান্ড্রয়েডের সাথে আসলেই সম্ভব এবং বেশিরভাগ ব্যবহারের ক্ষেত্রেও সুপারিশ করা হয়েছে। তথ্য যোগ করার জন্য ধন্যবাদ!
স্টিফান মেড্যাক

0

কোনও পূর্ণসংখ্যা [] অ্যারেটিকে কোন ইনট [] অ্যারে রূপান্তর করার কোনও উপায় আছে?

জাভা কোর লাইব্রেরিগুলি থেকে এই মোট বাদ পড়ার মতো মনে হয় যে আমি কখনও কাজ করি না। এবং ট্র্যাভ লাইব্রেরিটি যতটা সুবিধাজনক হতে পারে, আমি কোনও অ্যান্ড্রয়েড অ্যাপের জন্য এলপিজিএল পূরণের সঠিক প্রয়োজনীয়তাগুলি পার্স করতে পারছি না যা স্থিরভাবে একটি এলজিপিএল লাইব্রেরির সাথে লিঙ্ক করে (উপস্থাপিকা ঠিক আছে বলেছে, শরীর একই বলে বলে মনে হয় না)। এবং এই ক্লাসগুলি পাওয়ার জন্য অ্যাপাচি উত্সগুলি ছিঁড়ে ফেলা এবং খালি করা কেবল সহজ অসুবিধা। এখানে অবশ্যই একটি ভাল রাস্তা আছে।


-4

জাভা সংগ্রহটি কেবলমাত্র বস্তুর সংগ্রহ হতে হবে।

List<Integer> integerList = new ArrayList<Integer>();

পূর্ণসংখ্যা হ'ল আদিম ডেটা টাইপ ইন্টের রেপার ক্লাস।

জাভা র‌্যাপার ক্লাস থেকে আরও এখানে !

আপনি সরাসরি ইন্টিজারলিস্ট হিসাবে / থেকে সংরক্ষণ করতে এবং পেতে পারেন, integerList.add(intValue); int intValue = integerList.get(i)


4
প্রথম লাইনটি সংকলন করবে না এবং কোডের শেষ দুটি লাইন সর্বত্র রয়েছে। দয়া করে এটি করা থেকে বিরত থাকুন।
দ্য_মার্টিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.