সেট এবং তালিকার মধ্যে পার্থক্য কী?


416

মধ্যে মৌলিক পার্থক্য কি Set<E>এবং List<E>ইন্টারফেস?



5
আর তুমি কার্যকারিতা পদ জানতে চান, এই প্রশ্নের কটাক্ষপাত আছে stackoverflow.com/questions/10799417/...
vsingh

উত্তর:


504

Listউপাদানগুলির একটি ক্রমবর্ধমান ক্রম হয় যেখানে উপাদানগুলির Setএকটি স্বতন্ত্র তালিকা যা সীমানাবিহীন হয় (ধন্যবাদ, কুইন টেলর )।

List<E>:

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

Set<E>:

একটি সংগ্রহ যাতে কোনও সদৃশ উপাদান নেই। আরও আনুষ্ঠানিকভাবে, সেটগুলিতে e1.equals (e2) এবং সর্বাধিক একটি নাল উপাদান E1 এবং e2 উপাদানগুলির জুড়ি থাকে না। এর নাম দ্বারা বোঝানো হিসাবে, এই ইন্টারফেস গাণিতিক সেট বিমূর্ততা মডেল।


7
একটি সাজানোসেটের জন্য, কোনও দুটি উপাদান নেই যেখানে তুলনামূলকভাবে () == 0 হয়, সমান হিসাবে বলা হয় না।
পিটার লরি

34
একটি সেট অর্ডার করা যেতে পারে, সুতরাং এই উত্তরের প্রথম বিবৃতিটি বিভ্রান্তিকর, যদিও অবশ্যই সংগ্রহের আদেশ প্রয়োগের জন্য কোনও তালিকা বেছে নেওয়া উচিত
স্যামুয়েল ইউস্টাচি

24
ভুল! একটি জাভা সেট অর্ডার করা যেতে পারে, প্রয়োগের উপর নির্ভর করে; উদাহরণস্বরূপ, একটি জাভা ট্রিসেট অর্ডার করা হয়েছে। জাভা প্রসঙ্গে, একটি তালিকা এবং একটি সেট মধ্যে একমাত্র পার্থক্য হ'ল সেটে অনন্য আইটেম রয়েছে। গণিতের প্রসঙ্গে, একটি সেটের আইটেমগুলি অনন্য এবং আনর্ডারড।
stackoverflowuser2010

44
হ্যাঁ, একটি জাভা সেট কিন্তু হতে পারে প্রয়োজনীয় অর্ডার দেওয়া হয়নি। হ্যাঁ, আপনার যদি ট্রিসেট থাকে তবে আপনি অর্ডার করা হচ্ছে তা নির্ভর করতে পারেন। তবে আপনাকে জানতে হবে যে আপনার একটি ট্রিসেট রয়েছে কেবল একটি সেট নয়। যদি আপনাকে একটি সেট ফেরত দেওয়া হয়, আপনি অর্ডার করার উপর নির্ভর করতে পারবেন না। অন্যদিকে একটি তালিকা তার প্রকৃতির দ্বারা অর্ডার করা হয় এবং তালিকার কোনও প্রয়োগের আদেশ দিতে হবে। সুতরাং, ইন্টারফেস সংজ্ঞা শর্তাবলী, এটা বলা বিশেষত ভুল হবে না যে একটি সেট আনঅর্ডারড, তবে এটি সম্ভবত আরও কিছু প্রযুক্তিগতভাবে সঠিক যে সেটটি উপাদান ক্রমের কোনও গ্যারান্টি সরবরাহ করে না তা বলা যেতে পারে।
স্প্যানকি কুইগম্যান

14
"সাজানো" এর সাথে "অর্ডার করা" কে জড়ান না। তেমনিভাবে, ইন্টারফেসের একটি ইন্টারফেস এবং প্রয়োগের চুক্তির সাথে সংঘাত নাও। এটি বলাও ভুল যে "অর্ডারড" এমন কোনও কিছুর কোনও অর্ডার নেই, এর সহজ অর্থ হ'ল অর্ডার বাস্তবায়ন সম্পর্কে কোনও গ্যারান্টি নেই (এবং অর্ডার দেওয়া তালিকার বিপরীতে কলগুলির মধ্যে অর্ডার স্থিতিশীল নাও হতে পারে)।
লিলবির্ডি

223
╔═══════════════════╦══════════════════════╦═════════════════════════════╗
                            List                     Set              
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
     Duplicates              YES                     NO               
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
       Order              ORDERED          DEPENDS ON IMPLEMENTATION  
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
 Positional Access          YES                      NO                
╚═══════════════════╩══════════════════════╩═════════════════════════════╝

2
একটি বিষয় লক্ষণীয়: অবস্থানগত অ্যাক্সেস পারফরম্যান্স অন্তর্নিহিত বাস্তবায়নের উপর অনেকটা নির্ভর করে, অ্যারে বনাম লিঙ্কযুক্ত তালিকা স্ট্যাকওভারফ্লো.
com/ জিজ্ঞাসা /

1
অবস্থানিক অ্যাক্সেসের মাধ্যমে না হলে কীভাবে সেটগুলি সূচিবদ্ধ করা হয়? (ASCII- টেবিলের জন্য +1)
13:56

72

উপাদানের অর্ডার করা তালিকাগুলি (অনন্য বা না)
জাভা ইন্টারফেসের অনুসারে নামList
সূচক দ্বারা অ্যাক্সেস করা যায়

ব্যবহার করে কার্যকর

  • যোজিত তালিকা
  • ArrayList

অনন্য উপাদানের তালিকা:
জাভার ইন্টারফেসের নামSet অনুসারে সূচক দ্বারা অ্যাক্সেস করা
যায় না

ব্যবহার করে কার্যকর

  • হ্যাশসেট (আনর্ডারড)
  • লিংকডহ্যাশসেট (অর্ডার)
  • ট্রিসেট (প্রাকৃতিক অর্ডার বা সরবরাহকারী তুলনামূলক দ্বারা সাজানো)

উভয় ইন্টারফেস Setএবং Listজাভা ইন্টারফেস অনুসারেCollection


28

একটি তালিকাতে নকল উপাদান থাকতে পারে যখন একটি তালিকা করতে পারে। একটি তালিকা (জাভাতে) আদেশও বোঝায়।


16
  • একটি তালিকা আইটেমগুলির একটি আদেশযুক্ত গোষ্ঠীকরণ
  • একটি সেট হ'ল ডুপ্লিকেট ছাড়াই আইটেমগুলির একটি অ-রক্ষিত গোষ্ঠীকরণ (সাধারণত)

ধারণামূলকভাবে আমরা সাধারণত একটি আনর্ডারড গোষ্ঠীকরণ উল্লেখ করি যা ডুপ্লিকেটকে ব্যাগ হিসাবে মঞ্জুরি দেয় এবং সদৃশগুলি সেট নয়।


একটি সেট সদৃশ থাকতে পারে না।
karim79

কিছু সেট প্রয়োগের আদেশ দেওয়া হয় (যেমন লিংকডহ্যাশসেট, যা পর্দার পিছনে লিঙ্কডলিস্ট বজায় রাখে)। তবে সেট এডিটির অর্ডার নেই।
মাইকেল মায়ার্স

10

তালিকা

  1. উপাদানগুলির অর্ডার করা গোষ্ঠীকরণ।
  2. তালিকাটি নকল দিয়ে উপাদান সংগ্রহ করতে ব্যবহৃত হয়।
  3. তালিকা ইন্টারফেসের ভিতরে নতুন পদ্ধতি সংজ্ঞায়িত করা হয়।

সেট

  1. উপাদানগুলির একটি আনর্ডার্ড গোষ্ঠীকরণ।
  2. সেটটি নকল ছাড়াই উপাদান সংগ্রহ করতে ব্যবহৃত হয় used
  3. সেট ইন্টারফেসের অভ্যন্তরে কোনও নতুন পদ্ধতি সংজ্ঞায়িত করা হয়নি, সুতরাং আমাদের কেবলমাত্র সেট সাবক্লাসগুলির সাথে সংগ্রহ ইন্টারফেস পদ্ধতি ব্যবহার করতে হবে।

10

তালিকা:

Listগুলি সাধারণত নকল বস্তুর অনুমতি দেয়। Listগুলি অবশ্যই অর্ডার করা উচিত, এবং তাই সূচী দ্বারা অ্যাক্সেসযোগ্য।

বাস্তবায়ন শ্রেণীর অন্তর্ভুক্ত: ArrayList, LinkedList,Vector

সেট করুন:

Setগুলি সদৃশ বস্তুর অনুমতি দেয় না । বেশিরভাগ বাস্তবায়নগুলি অর্ডারযুক্ত নয়, তবে এটি বাস্তবায়ন নির্দিষ্ট।

বাস্তবায়ন ক্লাসগুলির মধ্যে রয়েছে: HashSet(আনর্ডারড), LinkedHashSet(অর্ডার করা), TreeSet(প্রাকৃতিক আদেশ দ্বারা সরবরাহ করা বা সরবরাহকারী তুলনাকারীর মাধ্যমে)


7

আমরা যেমন জাভা ইন্টারফেসের কথা বলছি, কেন জাভাদোকের দিকে তাকাব না ?!

  • Listহ'ল একটি অর্ডার করা সংগ্রহ (ক্রম), যা সাধারণত নকলকে অনুমতি দেয়
  • একটি Setক সংগ্রহ যা কোনও সদৃশ উপাদান নেই, পুনরাবৃত্তির ক্রমটি প্রয়োগের মাধ্যমে গ্যারান্টিযুক্ত হতে পারে

সেটের বিষয়ে আদেশের অভাব সম্পর্কে কোনও উল্লেখ নেই: এটি বাস্তবায়নের উপর নির্ভর করে।


2
সঠিক। লিঙ্কডহ্যাশসেটে সন্নিবেশ ক্রমে উপাদান রয়েছে।
ggb667

এটি একটি ইন্টারফেস, সবকিছু বাস্তবায়নের উপর নির্ভর করে। লিস্ট.জেট () পাই এর প্রথম 5 দশমিক দশমিক একটি ফাইল তৈরি করতে পারে এবং কিছু বাস্তবায়নে স্ট্যাকওভারফ্লোএক্সসেপশন নিক্ষেপ করতে পারে, এটি বোঝা যায় না যে আপনি "একটি তালিকা এমন কিছু যা ফাইল তৈরি করতে পারে" বলতে পারেন, যেহেতু এটি অংশ নয় ইন্টারফেস দ্বারা সংজ্ঞায়িত চুক্তি। দস্তাবেজ দাবী করে যে সেট একটি গাণিতিক ধারণা পরে মডেল করা হয়, যা সংজ্ঞা অনুসারে আন-অর্ডার করা হয়। আপনার কোডে একটি সেট দেওয়া আপনি ধরে নিতে পারবেন না যে এটি SOLID নীতিগুলি লঙ্ঘন না করে অর্ডার করা হয়েছে।
সারা

@ কাই, LinkedHashSetকোডটি পরে অর্ডার দেওয়ার উপর নির্ভর করে যদি আমি সাধারণত বাম দিকে রাখি । আমি কেবল তখনই ব্যবহার করি Setযদি আমি সত্যিই এটির মতো ব্যবহার করি তবে আপনি ধারনা করতে পারবেন না যে অন্তর্নিহিত বাস্তবায়ন একটি LinkedHashSetবা এর মতো, এটি আজ হতে পারে তবে আগামীকাল কোডটি পরিবর্তিত হবে এবং এটি ব্যর্থ হবে।
ক্রিস্টোফ রাউসি

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

5

আপনি যে উত্তরটি সন্ধান করছেন এটি এটি নাও হতে পারে তবে সংগ্রহের ক্লাসগুলির জাভাডোকটি আসলে বেশ বর্ণনামূলক। কপি / পেস্ট:

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

সেটগুলি থেকে পৃথক, তালিকাগুলি সাধারণত সদৃশ উপাদানগুলিকে মঞ্জুরি দেয়। আরও আনুষ্ঠানিকভাবে, তালিকাগুলি সাধারণত E1 এবং e2 উপাদানগুলির e1.equals (e2) এর জোড়া দেয় এবং তারা সাধারণত একাধিক নাল উপাদানকে মঞ্জুরি দেয় যদি তারা নাল উপাদানগুলিকে একেবারে অনুমতি দেয়। এটি অনিবার্য নয় যে কোনও ব্যক্তি নকলকে নিষিদ্ধ করার জন্য কোনও তালিকা কার্যকর করতে ইচ্ছুক হতে পারে যখন ব্যবহারকারী তাদের runোকানোর চেষ্টা করে রানটাইম ব্যতিক্রম ছুঁড়ে ফেলে তবে আমরা এই ব্যবহারটি বিরল বলে আশা করি be


5

একটি সেট স্বতন্ত্র বস্তুর একটি নিরবচ্ছিন্ন গোষ্ঠী - কোনও সদৃশ বস্তুর অনুমতি নেই। এটি সাধারণত theোকানো হচ্ছে এমন বস্তুর হ্যাশ কোড ব্যবহার করে প্রয়োগ করা হয়। (নির্দিষ্ট বাস্তবায়ন ক্রম যোগ করতে পারে, কিন্তু সেট ইন্টারফেস নিজেই না।)

একটি তালিকা হ'ল অবজেক্টের অর্ডার করা গোষ্ঠী যাতে নকল থাকতে পারে। এটি একটি সঙ্গে বাস্তবায়িত করা যায়নি ArrayList, LinkedListইত্যাদি


1
আমি বিভ্রান্ত 😕! এই প্রসঙ্গে অর্ডার / অর্ডারযুক্ত মানে কী? এটি কি আরোহণের ক্রম এবং অবতরণী আদেশের সাথে সম্পর্কিত? যদি তা Listহয় তবে অর্ডার করা হয় না 😕
ম্যালহোবায়াব

4
আদেশ দেওয়া হয় যখন ইনপুট ডেটাটি ব্যবহারকারী দ্বারা ঠিক যেমন ইনপুট হিসাবে সাজানো হয় যখন ইনপুট ডেটা শব্দের সাথে বা ক্রমবর্ধমান / অবতরণ ক্রমে সাজানো হয় (পূর্ণসংখ্যার মানগুলির ক্ষেত্রে)। আনঅর্ডার্ডের অর্থ ইনপুট ডেটা ব্যবহারকারীর ইনপুটড ক্রমে সংরক্ষণ করতে পারে বা নাও রাখতে পারে।
আখিল

5

তালিকা:
তালিকাটি সদৃশ উপাদান এবং নাল মানকে অনুমতি দেয়। উপাদানগুলির সাথে সম্পর্কিত সূচক ব্যবহার করে অনুসন্ধান করা সহজ এবং এটি সন্নিবেশ ক্রমে উপাদানগুলি প্রদর্শন করবে। উদাহরণ: (linkedlist)

import java.util.*;

public class ListExample {

 public static void main(String[] args) {
    // TODO Auto-generated method stub

    List<Integer> l=new LinkedList<Integer>();
    l.add(001);
    l.add(555);
    l.add(333);
    l.add(888);
    l.add(555);
    l.add(null);
    l.add(null);

    Iterator<Integer> il=l.iterator();

    System.out.println(l.get(0));

    while(il.hasNext()){
        System.out.println(il.next());
    }

    for(Integer str : l){
        System.out.println("Value:"+str);
    }
 }

}

আউটপুট:

1
1
555
333
888
555
নাল
নাল
মান: 1
মান: 555
মান: 333
মান: 888
মান: 555
মান: নাল
মান: নাল

সেট:
সেট কোনও নকল উপাদানকে অনুমতি দেয় না এবং এটি একক নাল মানকে অনুমতি দেয় t এটি উপাদান প্রদর্শন করার কোনও আদেশ বজায় রাখে না n কেবলমাত্র TreeSetআরোহী ক্রমে প্রদর্শিত হবে।

উদাহরণ: (TreeSet)

import java.util.TreeSet;

public class SetExample {

 public static void main(String[] args) {
    // TODO Auto-generated method stub

    TreeSet<String> set = new TreeSet<String>();
    try {
        set.add("hello");
        set.add("world");
        set.add("welcome");
        set.add("all");

        for (String num : set) {
            System.out.println( num);

        }
        set.add(null);
    } catch (NullPointerException e) {
        System.out.println(e);
        System.out.println("Set doesn't allow null value and duplicate value");
    }

 }

}

আউটপুট:

সমস্ত
হ্যালো
স্বাগতম
বিশ্ব
java.lang. নালপয়েন্টার এক্সেকশন
সেট নাল মান এবং সদৃশ মানকে অনুমতি দেয় না


3

1.লিস্ট সদৃশ মানগুলিকে অনুমতি দেয় এবং সেটটি সদৃশগুলিকে অনুমতি দেয় না

২.লিস্ট অর্ডার বজায় রাখে যাতে আপনি তালিকাতে উপাদানগুলি সন্নিবেশ করিয়েছেন। L.লিস্ট উপাদানগুলির একটি ক্রমযুক্ত ক্রম যেখানে সেটটি এমন কোনও উপাদানগুলির একটি পৃথক তালিকা যা আনর্ডারড নয়।


3

তালিকা বনাম সেট

1) সেট সদৃশ অনুমতি দেয় না। তালিকাটি নকল করতে দেয়। সেট বাস্তবায়নের ভিত্তিতে এটি সন্নিবেশনের আদেশও বজায় রাখে।

উদাহরণ: LinkedHashSet। এটি সন্নিবেশ ক্রম বজায় রাখে lease দয়া করে এখানে ক্লিক করুন

2) পদ্ধতি রয়েছে । সেট প্রকৃতির দ্বারা এটি অ্যাক্সেসের জন্য আরও ভাল পারফরম্যান্স দেবে। সেরা কেস এর ও (1)। তবে তালিকার কাছে পারফরম্যান্স ইস্যু রয়েছে contains


2

সমস্ত Listক্লাস সন্নিবেশ ক্রম বজায় রাখে। তারা পারফরম্যান্স এবং অন্যান্য বৈশিষ্ট্যের উপর ভিত্তি করে বিভিন্ন বাস্তবায়ন ব্যবহার করে (উদাহরণস্বরূপ ArrayListএকটি নির্দিষ্ট সূচকের অ্যাক্সেসের গতির জন্য, LinkedListকেবল অর্ডার বজায় রাখার জন্য)। যেহেতু কোনও কী নেই তাই নকলকে অনুমতি দেওয়া হয়েছে।

Setক্লাস সন্নিবেশ শৃঙ্খলা বজায় রাখার না। তারা allyচ্ছিকভাবে একটি নির্দিষ্ট আদেশ (যেমন হিসাবে SortedSet) চাপিয়ে দিতে পারে , তবে সাধারণত কিছু হ্যাশ ফাংশন (যেমন হিসাবে HashSet) এর উপর ভিত্তি করে একটি বাস্তবায়ন-সংজ্ঞায়িত আদেশ থাকে । যেহেতু Setগুলি কী দ্বারা অ্যাক্সেস করা হয়েছে, সদৃশগুলি অনুমোদিত নয়।


মানচিত্র কী দ্বারা অবজেক্টগুলিকে সঞ্চয় করে তবে বস্তুর সাথে সম্পর্কিত একটি অনন্য মান ব্যবহার করে স্টোর অবজেক্টগুলিকে সেট করে। (মানচিত্রগুলি কী স্বতন্ত্রতা পরীক্ষা করতে হ্যাশ কোডগুলিও ব্যবহার করতে পারে তবে তাদের প্রয়োজন হয় না))
কুইন টেলর

1

অর্ডার ... একটি তালিকার একটি আদেশ আছে, একটি সেট নেই not


2
সেট এডিটি অর্ডার নির্দিষ্ট করে না, তবে কিছু সেট বাস্তবায়ন (যেমন লিংকডহ্যাশসেট) সন্নিবেশ ক্রম রাখে।
মাইকেল মায়ার্স

3
তবে, আরও গুরুত্বপূর্ণ পার্থক্যটি হ'ল সেটগুলি সদৃশগুলিকে অনুমতি দেয় না। একটি ব্যাগ / মাল্টিসেট করে।
কুইন টেলর

একটি ট্রিসেটের অর্ডার রয়েছে।
stackoverflowuser2010

1

জাভা মধ্যে তালিকা এবং সেট মধ্যে কিছু কম নোট যোগ্য পার্থক্য নীচে দেওয়া হয়েছে:

1) জাভা মধ্যে তালিকা এবং সেট মধ্যে মৌলিক পার্থক্য নকল উপাদান অনুমতি দেয়। জাভাতে থাকা তালিকা নকলকে অনুমতি দেয় যখন সেট কোনও সদৃশকে অনুমতি দেয় না। আপনি যদি সেটিতে সদৃশ প্রবেশ করান তবে এটি পুরানো মানটিকে প্রতিস্থাপন করবে। জাভাতে যে কোনও প্রয়োগের ক্ষেত্রে কেবল অনন্য উপাদান থাকবে।

2) জাভাতে তালিকা এবং সেট এর মধ্যে আরেকটি উল্লেখযোগ্য পার্থক্য হ'ল অর্ডার। তালিকাটি একটি অর্ডার করা সংগ্রহ যখন সেটটি একটি আনর্ডারড সংগ্রহ। তালিকা উপাদানগুলির সন্নিবেশ ক্রম বজায় রাখে, এর আগে যে কোনও উপাদান whichোকানো হয়েছে তার পরে সন্নিবেশ করা কোনও উপাদানের তুলনায় নিম্ন সূচীতে যাবে means জাভাতে সেট কোনও অর্ডার বজায় রাখে না। যদিও সেটটি सॉোর্টসেট নামে আরেকটি বিকল্প সরবরাহ করে যা সেটগুলিতে সেট থাকা সঞ্চিত অবজেক্টগুলির তুলনামূলক এবং তুলনামূলক পদ্ধতি দ্বারা সংজ্ঞায়িত নির্দিষ্ট বাছাই ক্রমে সেট উপাদান সংরক্ষণ করতে পারে।

3) জাভাতে তালিকা ইন্টারফেসের জনপ্রিয় প্রয়োগের মধ্যে অ্যারেলিস্ট, ভেক্টর এবং লিংকডলিস্ট অন্তর্ভুক্ত রয়েছে। সেট ইন্টারফেসের জনপ্রিয় প্রয়োগের ক্ষেত্রে হ্যাশসেট, ট্রিসেট এবং লিংকডহ্যাশসেট অন্তর্ভুক্ত রয়েছে।

এটি বেশ পরিষ্কার যে আপনার যদি সন্নিবেশ ক্রম বা অবজেক্ট বজায় রাখতে হয় এবং আপনার সংগ্রহের তালিকায় যাওয়ার চেয়ে ডুপ্লিকেট থাকতে পারে। অন্যদিকে আপনার প্রয়োজনটি যদি কোনও ডুপ্লিকেট ছাড়াই অনন্য সংগ্রহ বজায় রাখা হয় তবে সেটটি হ'ল উপায়।


হাই @ বিভা, আমি যদি দু'জনের অবস্থা চাই? মানে আমি আমার ডেটাতে নকল থাকতে চাই না এবং এটিও যাতে শৃঙ্খলাবদ্ধ হয় তাও চাই।
পানাদোল চং

1

তালিকা:

  1. অনুমোদিত নকল।
  2. গোষ্ঠীগত উপাদানগুলিতে আদেশ দেওয়া (অন্য কথায় নির্দিষ্ট অর্ডার থাকা অবস্থায় .র্ধমান ক্রমে সাজানোর দরকার নেই)

সেট করুন:

  1. অনুমোদিত নকল।
  2. দলবদ্ধকরণের উপাদানগুলিতে নিরক্ষিত। (অন্য কথায় কোনও নির্দিষ্ট আদেশ নেই। এটি আরোহী ক্রমে সাজানো বা নাও হতে পারে)

0

Set<E>এবং List<E>উভয়ই ধরণের উপাদান সংরক্ষণ করতে ব্যবহৃত হয় E। পার্থক্যটি হ'ল Setআনর্ডার্ড পদ্ধতিতে সংরক্ষণ করা হয় এবং সদৃশ মানগুলিকে অনুমতি দেয় না। Listআদেশযুক্ত উপায়ে উপাদানগুলি সঞ্চয় করতে ব্যবহৃত হয় এবং এটি সদৃশ মানকে অনুমতি দেয় না।

Setসূচি পজিশনে Listউপাদানগুলি অ্যাক্সেস করা যায় না এবং সূচী অবস্থানের সাথে উপাদানগুলি অ্যাক্সেস করা যায়।


1
@ বালুসসি দয়া করে পোস্টের তারিখটি দেখে মন্তব্য করবেন না। পোস্টটি উপযুক্ত সময়ে দেখুন।
যশ

0

হাই অনেক উত্তর ইতিমধ্যে দেওয়া আছে .. আমাকে এখনও কিছু উল্লেখ করা হয় যা কিছু পয়েন্ট নির্দেশ করুন:

  • বেশিরভাগ তালিকার বাস্তবায়ন (অ্যারেলিস্ট, ভেক্টর) ইন্টারফেস প্রয়োগ করেRandomAccess যা দ্রুত অ্যাক্সেসের জন্য চিহ্নিতকারী ইন্টারফেস। সেট প্রয়োগগুলির কোনওটিই এটি করে না।
  • তালিকায় একটি বিশেষ আইট্রেটার ব্যবহৃত হয় ListIterator যা উভয় দিকেই পুনরাবৃত্তি সমর্থন করে । সেটটিতে ইটারেটর ব্যবহার করা হয় যা কেবল 1 টি উপায় পুনরাবৃত্তি সমর্থন করে
  • হ্যাশসেট একই সংখ্যক উপাদান সংরক্ষণের জন্য অ্যারেলিস্টের চেয়ে 5.5 গুণ বেশি মেমরি নেয় ।

@ সুমুর্তি এটি কিছুটা দেরি হয়ে গেছে, এবং আপনি নোট করেছেন কিনা তা সম্পর্কে নিশ্চিত নন তবে আপনার প্রথম পয়েন্টটি নিজেই বিপরীত: "তালিকার বেশিরভাগ বাস্তবায়ন (অ্যারেলিস্ট, ভেক্টর) র্যান্ডমঅ্যাক্সেস বাস্তবায়ন করে ..." এবং "... তালিকার কোনওটিই নয় বাস্তবায়নগুলি এটি করে "
পিটার এম

0

সবচেয়ে বড় ভিন্নটি হল মূল ধারণাটি।

থেকে সেট এবং তালিকা ইন্টারফেস। সেটটি গণিতের ধারণা। সেট পদ্ধতি সংগ্রহকে প্রসারিত করে new নতুন পদ্ধতি যুক্ত না করে। আকার () এর অর্থ কার্ডিনালিটি (আরও বেশি বিটসেট কার্ডিনালিটি , লিনিয়ার কাউন্টার। লগ লগ , হাইপারলগলগ )। addAll () এর অর্থ ইউনিয়ন। ধরে রাখার সমস্ত () অর্থ ছেদ করা। মুছে ফেলা সমস্ত () অর্থ পার্থক্য।

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

সুতরাং প্রয়োজনীয় পার্থক্য ধারণা হয়। সেট গণিত সেট ধারণা। তালিকা ক্রম ধারণা।


-1

গ্রোভির সাথে এখানে একটি স্পষ্ট উদাহরণ। আমি একটি সেট এবং একটি তালিকা তৈরি। তারপরে আমি প্রতিটি তালিকার মধ্যে 20 এলোমেলোভাবে উত্পন্ন মান সংরক্ষণ করার চেষ্টা করি। উত্পন্ন মান 0 থেকে 5 এর মধ্যে হতে পারে

s = [] as Set
l = []

max = 5
print "random Numbers :"
20.times{
e = (int)Math.random()*max
s << e
l << e
print "$e, "
}


println "\n"
println "Set : $s "
println "list : $l

ফলাফল :

এলোমেলো নম্বর: 4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3

সেট করুন: [4, 1, 0, 2, 3]

তালিকা: [4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]

আপনি দেখতে পাচ্ছেন যে পার্থক্যটি হ'ল:

  • সেটটি সদৃশ মানগুলিকে অনুমতি দেয় না।
  • তালিকাটি সদৃশ মানকে অনুমতি দেয়।

1
তালিকাগুলি অর্ডারও বজায় রাখে।
glen3b

-1

উত্তরটি পছন্দ করুন যেমন SET এর সদৃশ মান এবং তালিকা থাকতে পারে না। অবশ্যই, তাদের আলাদা করার জন্য অর্ডার হ'ল একটি জিনিস।


-1

সেট: একটি সেট এর সংগ্রহে সদৃশ উপাদান থাকতে পারে না। এটি একটি অর্ডারযুক্ত সংগ্রহও। সেট থেকে ডেটা অ্যাক্সেস করতে, কেবলমাত্র আইট্রেটার ব্যবহার করা প্রয়োজন এবং এটির জন্য সূচক ভিত্তিক পুনরুদ্ধার করা সম্ভব নয়। এটি যখনই স্বতন্ত্রতা সংগ্রহের প্রয়োজন হয় তখন এটি প্রধানত ব্যবহৃত হয়।

তালিকা: একটি তালিকায় সদৃশ উপাদান যেমন সন্নিবেশ করা হয় তত অনুরূপ নকল উপাদান থাকতে পারে। সুতরাং, এটি সূচক বা পুনরুদ্ধারের উপর নির্ভর করে ডেটা পুনরুদ্ধার করা যেতে পারে। সংগ্রহের সঞ্চয় করতে এটি ব্যাপকভাবে ব্যবহৃত হয় যা সূচকের ভিত্তিতে অ্যাক্সেস করতে হবে।


-2

শীর্ষস্থানীয় নাম: তালিকা ভিএস সেট

আমি সবেমাত্র জাভার সবচেয়ে গুরুত্বপূর্ণ বিষয়টি সংগ্রহ করেছি ফ্রেমওয়ার্ক বলে called আমি সংগ্রহগুলি সম্পর্কে আমার সামান্য জ্ঞানটি আপনার সাথে ভাগ করে নেওয়ার চিন্তা করেছি। তালিকা, সেট, মানচিত্র এটির সবচেয়ে গুরুত্বপূর্ণ বিষয়। সুতরাং তালিকা এবং সেট দিয়ে শুরু করা যাক।

তালিকা এবং সেট মধ্যে পার্থক্য:

  1. তালিকা একটি সংগ্রহ শ্রেণি যা শ্রেণি প্রসারিত AbstractListযেখানে সেট হিসাবে সংগ্রহের শ্রেণি যা AbstractSetশ্রেণি প্রসারিত হয় তবে উভয়ই সংকলন ইন্টারফেস প্রয়োগ করে।

  2. তালিকা ইন্টারফেস নকল মান (উপাদানসমূহ) অনুমতি দেয় যেখানে সেট ইন্টারফেস সদৃশ মানকে মঞ্জুরি দেয় না। সেটে সদৃশ উপাদানগুলির ক্ষেত্রে এটি পুরানো মানগুলি প্রতিস্থাপন করে।

  3. তালিকা ইন্টারফেস নুল মানগুলিকে অনুমতি দেয় যেখানে সেট ইন্টারফেস হিসাবে নাল মানগুলিকে অনুমতি দেয় না। সেট এটি নাল মান ব্যবহার করার ক্ষেত্রে NullPointerException

  4. তালিকা ইন্টারফেস সন্নিবেশ ক্রম বজায় রাখে। এর অর্থ হল যেভাবে তালিকার উপাদানগুলিকে আমরা একইভাবে পুনরায় সংযুক্তকারী বা প্রতিটি শৈলীর সাহায্যে এটি যোগ করি। যদিও Setপ্রয়োগগুলি অগত্যা সন্নিবেশ ক্রম বজায় রাখে না। (যদিও SortedSetব্যবহার করে TreeSetএবং LinkedHashSetসন্নিবেশ ক্রম বজায় রাখে)।

  5. তালিকার ইন্টারফেসের নিজস্ব পদ্ধতি নির্ধারিত রয়েছে যেখানে সেট ইন্টারফেসের নিজস্ব পদ্ধতি নেই তাই সেট কেবল সংগ্রহ ইন্টারফেস পদ্ধতি ব্যবহার করে।

  6. তালিকার ইন্টারফেসের একটি উত্তরাধিকার শ্রেণীর নাম রয়েছে Vectorযেখানে সেট ইন্টারফেসের কোনও উত্তরাধিকার শ্রেণি নেই

  7. সর্বশেষে তবে সর্বনিম্ন নয় ... listIterator()পদ্ধতিটি কেবল তালিকা শ্রেণীর মধ্যে থাকা উপাদানগুলির মধ্যে চক্র ব্যবহার করতে ব্যবহৃত হয় যেখানে শ্রেণীর উপাদানগুলি সেট করতে আমরা পুনরায় () পদ্ধতি ব্যবহার করতে পারি

আমরা কিছু যোগ করতে পারেন? আমাকে বুঝতে দাও.

ধন্যবাদ।


একটির জন্য, Listএবং Setইন্টারফেসগুলি যা একটি বিমূর্ত শ্রেণির আকারে "বেস" বাস্তবায়ন (যা আপনি উল্লেখ করেছেন)। এছাড়াও, # 3 সম্পূর্ণ অসম্পূর্ণ , কারণ বেশিরভাগ সেট নাল মানকে অনুমতি দেয় (তবে বাস্তবায়ন নির্ভর করে)। আমি # 5 এবং # 7 বুঝতে পারি না, এবং # 6 এর Vectorজন্য উত্তরাধিকার নয়, তবে কেবল সিঙ্ক্রোনাইজ করা হয় এবং সিঙ্ক্রোনাইজেশন প্রয়োজন হলে বাদে ব্যবহারের জন্য পছন্দ করা হয় না।
glen3b

-3

সেট করুন:

সদৃশ মান থাকতে পারে না অর্ডার প্রয়োগের উপর নির্ভর করে। ডিফল্টরূপে এটি অর্ডার করা হয় না সূচী দ্বারা অ্যাক্সেস থাকতে পারে না

তালিকা:

সদৃশ মান থাকতে পারে ডিফল্ট অনুসারে অর্ডার করা সূচী দ্বারা অ্যাক্সেস থাকতে পারে

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