একটি তালিকায় কোনও উপাদানের সংখ্যার সংখ্যা কীভাবে গণনা করতে হবে


173

আমার কাছে ArrayListজাভাটির একটি সংগ্রহের ক্লাস রয়েছে:

ArrayList<String> animals = new ArrayList<String>();
animals.add("bat");
animals.add("owl");
animals.add("bat");
animals.add("bat");

আপনি দেখতে পাচ্ছেন যে animals ArrayList3 টি batউপাদান এবং একটি owlউপাদান রয়েছে। আমি ভাবছিলাম কালেকশন ফ্রেমওয়ার্কে এমন কোনও এপিআই রয়েছে যা batঘটনার সংখ্যাটি দেয় বা ঘটনার সংখ্যা নির্ধারণের জন্য অন্য কোনও উপায় রয়েছে কিনা।

আমি দেখেছি যে গুগলের সংগ্রহে Multisetএমন একটি এপিআই রয়েছে যা কোনও উপাদানের মোট সংখ্যার মোট সংখ্যা প্রদান করে। তবে এটি কেবল জেডিকে 1.5 এর সাথে সামঞ্জস্যপূর্ণ। আমাদের পণ্য বর্তমানে জেডিকে 1.6 এ রয়েছে, তাই আমি এটি ব্যবহার করতে পারি না।


এটি বাস্তবায়নের পরিবর্তে কোনও ইন্টারফেসে আপনাকে প্রোগ্রাম করার কেন একটি কারণ। আপনি যদি সঠিক সংগ্রহটি খুঁজে পান তবে আপনার সংগ্রহটি ব্যবহারের ধরণটি পরিবর্তন করতে হবে। আমি এই বিষয়ে একটি উত্তর পোস্ট করব।
অস্কাররাজ

উত্তর:


333

আমি নিশ্চিত যে সংগ্রহগুলিতে স্থির ফ্রিকোয়েন্সি পদ্ধতিটি এখানে কার্যকর হবে:

int occurrences = Collections.frequency(animals, "bat");

যেভাবেই হোক আমি এটি করব। আমি দৃ sure়ভাবে নিশ্চিত যে এটি সরাসরি জেডকি 1.6।


জেআরই থেকে অপিটিকে সর্বদা পছন্দ করুন, যা প্রকল্পে অন্য নির্ভরতা যুক্ত করে। এবং চাকা পুনর্নবীকরণ করবেন না !!
ফার্নান্দো


104

জাভা 8 তে:

Map<String, Long> counts =
    list.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));

6
ই -> এর পরিবর্তে ফাংশন.সিডিয়েনটি () (স্ট্যাটিক আমদানি সহ) ব্যবহার করা এটি পড়ার জন্য কিছুটা সুন্দর করে তোলে।
কুচি

8
এর চেয়ে ভাল কেন Collections.frequency()? এটি কম পাঠযোগ্য বলে মনে হচ্ছে।
রোজিনা

এটি যা চাওয়া হয়েছিল তা নয়। এটি প্রয়োজনের চেয়ে বেশি কাজ করে।
অ্যালেক্স ওয়ার্ডেন

8
এটি যা চাওয়া হয়েছিল তার চেয়ে আরও বেশি কিছু করতে পারে তবে আমি যা চেয়েছিলাম তা হ'ল এটি করে (তাদের গণনাগুলির তালিকায় স্বতন্ত্র উপাদানগুলির একটি মানচিত্র পান)। তদ্ব্যতীত, আমি অনুসন্ধান করার সময় এই প্রশ্নটি গুগলের শীর্ষ ফলাফল ছিল।
কেজেপি

@ রজিনা আপনি একটি পাসে সমস্ত গণনা পাবেন।
atoMerz

22

এটি দেখায়, কার্যকর জাভা বইয়ে বর্ণিত হিসাবে " তাদের ইন্টারফেসগুলির দ্বারা অবজেক্টগুলিকে উল্লেখ করুন " কেন গুরুত্বপূর্ণ ।

আপনি যদি প্রয়োগটির কোডিং করেন এবং অ্যারেলিস্টটি ব্যবহার করে বলুন যে আপনার কোডের 50 টি স্থান, আপনি যখন আইটেমগুলি গণনা করে একটি ভাল "তালিকা" প্রয়োগ করেন, তখন আপনাকে এই সমস্ত 50 টি স্থান পরিবর্তন করতে হবে এবং সম্ভবত আপনাকে এগুলি করতে হবে আপনার কোডটি ভঙ্গ করুন (যদি এটি কেবলমাত্র আপনার দ্বারা ব্যবহৃত হয় তবে কোনও বড় কথা নয়, তবে যদি এটি অন্য কেউ ব্যবহার করে তবে আপনি তাদের কোডটিও ভেঙে ফেলবেন)

ইন্টারফেসে প্রোগ্রামিংয়ের মাধ্যমে আপনি এই 50 টি স্থান অপরিবর্তিত রাখতে এবং প্রয়োগটি অ্যারেলিস্ট থেকে "কাউন্টিটেমলিস্ট" (উদাহরণস্বরূপ) বা অন্য কোনও শ্রেণিতে প্রতিস্থাপন করতে পারেন।

এটি কীভাবে লিখিত হতে পারে তার নীচে একটি খুব বেসিক নমুনা দেওয়া আছে। এটি কেবলমাত্র একটি নমুনা, একটি প্রকাশনা প্রস্তুত তালিকা হতে হবে অনেক বেশি জটিল।

import java.util.*;

public class CountItemsList<E> extends ArrayList<E> { 

    // This is private. It is not visible from outside.
    private Map<E,Integer> count = new HashMap<E,Integer>();

    // There are several entry points to this class
    // this is just to show one of them.
    public boolean add( E element  ) { 
        if( !count.containsKey( element ) ){
            count.put( element, 1 );
        } else { 
            count.put( element, count.get( element ) + 1 );
        }
        return super.add( element );
    }

    // This method belongs to CountItemList interface ( or class ) 
    // to used you have to cast.
    public int getCount( E element ) { 
        if( ! count.containsKey( element ) ) {
            return 0;
        }
        return count.get( element );
    }

    public static void main( String [] args ) { 
        List<String> animals = new CountItemsList<String>();
        animals.add("bat");
        animals.add("owl");
        animals.add("bat");
        animals.add("bat");

        System.out.println( (( CountItemsList<String> )animals).getCount( "bat" ));
    }
}

ওও নীতিগুলি এখানে প্রয়োগ করা হয়েছে: উত্তরাধিকার, পলিমারফিজম, বিমূর্ততা, এনক্যাপসুলেশন।


12
উত্তমরূপের চেয়ে বরং সর্বদা রচনা চেষ্টা করা উচিত। আপনার লিঙ্কলিস্ট বা অন্য কোনও সময় চাইলে আপনার প্রয়োগটি এখন অ্যারেলিস্টে আটকে যায়। আপনার উদাহরণটি এর নির্মাতা / কারখানায় অন্য একটি এলআইএসটি নেওয়া উচিত ছিল এবং একটি মোড়ক ফিরিয়েছিল।
এমপি।

আমি আপনার সাথে একমত। নমুনায় আমি উত্তরাধিকারটি ব্যবহার করার কারণটি হ'ল রচনা উদাহরণের চেয়ে উত্তরাধিকার ব্যবহার করে (তালিকার ইন্টারফেসটি প্রয়োগ করে) চালানো উদাহরণ প্রদর্শন করা আরও অনেক সহজ। উত্তরাধিকার সর্বাধিক মিলন তৈরি করে।
অস্কাররাজ

2
তবে এটিকে কাউন্টিটেমলিস্টের নাম দিয়ে আপনি বোঝাচ্ছেন যে এটি দুটি কাজ করে, এটি আইটেমগুলি গণনা করে এবং এটি একটি তালিকা। আমি মনে করি class শ্রেণীর জন্য কেবলমাত্র একটি একক দায়িত্ব, ঘটনাগুলি গণনা করা তত সহজ হবে এবং আপনাকে তালিকা ইন্টারফেসটি প্রয়োগ করতে হবে না।
ফ্লব

11

দুঃখিত, কোনও সহজ পদ্ধতি কল নেই যা এটি করতে পারে। তবে আপনাকে যা করতে হবে তা হ'ল একটি মানচিত্র তৈরি করা এবং এটির সাথে ফ্রিকোয়েন্সি গণনা করা।

HashMap<String,int> frequencymap = new HashMap<String,int>();
foreach(String a in animals) {
  if(frequencymap.containsKey(a)) {
    frequencymap.put(a, frequencymap.get(a)+1);
  }
  else{ frequencymap.put(a, 1); }
}

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

হ্যাঁ, এটি কোনও ভাল সমাধান নাও হতে পারে, এর অর্থ এটির ভুল নয়।
আদিল আনসারী

1
@ ডিহম্যান, আমি মনে করি না যে তিনি আক্ষরিকভাবে একটি 4-উপাদান সংকলনে ব্যাটের সংখ্যার সংখ্যা চান, আমি মনে করি যে এটি কেবলমাত্র নমুনা ডেটা ছিল যাতে আমরা আরও ভাল বুঝতে পারি :-)।
paxdiablo

2
@ ভিনিগার 2/2। প্রোগ্রামিং এখন জিনিসগুলি সঠিকভাবে করা সম্পর্কে, তাই আমরা মাথাব্যথা বা ভবিষ্যতের কোনও ব্যবহারকারী বা অন্য কোডার হিসাবে অন্য কারও জন্য খারাপ অভিজ্ঞতা সৃষ্টি করি না। PS: আপনার কোডে যত বেশি কোড লেখার সুযোগ রয়েছে তেমন কিছু ভুল হতে পারে।
এমপি।

2
@ এমপি: দয়া করে ব্যাখ্যা করুন কেন এটি কোনও স্কেলযোগ্য সমাধান নয়। রায় হিদায়াত প্রতিটি টোকেনের জন্য একটি ফ্রিকোয়েন্সি গণনা তৈরি করছে যাতে প্রতিটি টোকেনটি পরে দেখা যায়। এর চেয়ে ভাল সমাধান কী?
stackoverflowuser2010

10

জাভাতে আপনার পক্ষে এটি করার কোনও দেশীয় পদ্ধতি নেই। তবে এটি করার জন্য আপনি অ্যাপাচি কমন্স-কালেকশন থেকে IterableUtils # countMatches () ব্যবহার করতে পারেন ।


নীচের আমার উত্তরটি দেখুন - সঠিক উত্তরটি এমন কাঠামো ব্যবহার করা হয় যা প্রতিবারই কোনও জিজ্ঞাসা করা শুরু হওয়ার সময় থেকে শুরু করে এন্ট্রি গণনা করার চেয়ে শুরু থেকে গণনা ধারণাটিকে সমর্থন করে।
এমপি।

@ এমপি তাই আপনার চেয়ে আলাদা মতামত পোষণকারী সবাইকে আপনি নীচে ফেলেছেন? যদি সে কোনও কারণে ব্যাগ ব্যবহার করতে না পারে বা কোনও স্থানীয় সংগ্রহ ব্যবহার করে আটকে যায় তবে কী হবে?
কেভিন

-1 ব্যথা হ্রাসকৃত হওয়ার জন্য :-) আমি মনে করি এমপি আপনাকে নীচে নামিয়েছে কারণ প্রতিবার আপনি যখন ফলাফল চান তখন আপনার সমাধানের জন্য সময় ব্যয় হয়। কেবল একটি সন্নিবেশে একটি ব্যাগের জন্য কিছুটা সময় ব্যয় হয়। ডাটাবেসগুলির মতো, এই ধরণের কাঠামোগুলি "লেখার চেয়ে বেশি পঠিত" হয়ে থাকে তাই স্বল্প ব্যয়ের বিকল্পটি ব্যবহার করা বোধগম্য হয়।
paxdiablo

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

আপনাকে উভয়কে ধন্যবাদ। আমি বিশ্বাস করি যে দুটি পদ্ধতির মধ্যে একটি বা উভয়ই কাজ করতে পারে। আমি আগামীকাল একটি চেষ্টা করে দেব।
এমএম

9

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

ArrayList<String> animals = new ArrayList<String>();
animals.add("bat");
animals.add("owl");
animals.add("bat");
animals.add("bat");
System.out.println("Freq of bat: "+Collections.frequency(animals, "bat"));

27
লার্স অ্যান্ডরেন আপনার উত্তর 5 বছর আগে একই উত্তর পোস্ট করেছেন।
ফ্যাবিয়ান বার্নি

9

স্ট্রিম ব্যবহার করে বিকল্প জাভা 8 সমাধান :

long count = animals.stream().filter(animal -> "bat".equals(animal)).count();

8

আমি অবাক হই, আপনি কেন গুগলের সংগ্রহ APIটি JDK 1.6 ব্যবহার করতে পারবেন না? এটা কি তাই বলে? আমি মনে করি আপনি পারবেন, কোনও সামঞ্জস্যের সমস্যা হওয়া উচিত নয়, কারণ এটি নিম্ন সংস্করণের জন্য নির্মিত। কেসটি যদি 1.6 এর জন্য নির্মিত হয় এবং আপনি 1.5 চালাচ্ছেন তবে অন্যরকম হত।

আমি কোথাও ভুল করছি?


তারা স্পষ্টভাবে উল্লেখ করেছে যে তারা তাদের এপিআইকে জেডকে 1.6-তে উন্নীত করার প্রক্রিয়াধীন রয়েছে।
এমএম

1
এটি পুরানো বেমানান করে না। এটা কি পারে?
আদিল আনসারী

এটা করা উচিত নয়। তবে তারা যেভাবে অস্বীকারকারী ছুঁড়ে মারছিল, তা তাদের 0.9 সংস্করণ
এমএম

আমরা এটি 1.6 দিয়ে ব্যবহার করি। এটি কোথায় 1.5 এর সাথে সামঞ্জস্যপূর্ণ বলে?
প্যাট্রিক 21

2
"1.6" আপগ্রেড করার দ্বারা তারা সম্ভবত "1.6 এর সাথে সামঞ্জস্য ঠিক করতে" নয়, "1.6-তে নতুন স্টাফের সুবিধা গ্রহণের জন্য আপগ্রেডিং" অর্থ mean
অ্যাডাম জ্যাসকিউইচ 22

6

কিছুটা আরও দক্ষ পন্থা হতে পারে

Map<String, AtomicInteger> instances = new HashMap<String, AtomicInteger>();

void add(String name) {
     AtomicInteger value = instances.get(name);
     if (value == null) 
        instances.put(name, new AtomicInteger(1));
     else
        value.incrementAndGet();
}

6

সরাসরি তালিকা থেকে অবজেক্টের উপস্থিতিগুলি পেতে:

int noOfOccurs = Collections.frequency(animals, "bat");

তালিকার ভিতরে অবজেক্ট সংগ্রহের উপস্থিতি পেতে, অবজেক্ট শ্রেণিতে সমান পদ্ধতিটি ওভাররাইড করুন:

@Override
public boolean equals(Object o){
    Animals e;
    if(!(o instanceof Animals)){
        return false;
    }else{
        e=(Animals)o;
        if(this.type==e.type()){
            return true;
        }
    }
    return false;
}

Animals(int type){
    this.type = type;
}

সংগ্রহগুলি কল করুন f ফ্রিকোয়েন্সি হিসাবে:

int noOfOccurs = Collections.frequency(animals, new Animals(1));

6

জাভা 8 বৈশিষ্ট্যগুলি ব্যবহার করে একটি অ্যারে স্ট্রিংয়ের মান খুঁজে পাওয়ার সহজ উপায়।

public void checkDuplicateOccurance() {
        List<String> duplicateList = new ArrayList<String>();
        duplicateList.add("Cat");
        duplicateList.add("Dog");
        duplicateList.add("Cat");
        duplicateList.add("cow");
        duplicateList.add("Cow");
        duplicateList.add("Goat");          
        Map<String, Long> couterMap = duplicateList.stream().collect(Collectors.groupingBy(e -> e.toString(),Collectors.counting()));
        System.out.println(couterMap);
    }

আউটপুট: {বিড়াল = 2, ছাগল = 1, গরু = 1, গরু = 1, কুকুর = 1

আপনি "গরু" খেয়াল করতে পারেন এবং গরুকে একই স্ট্রিং হিসাবে বিবেচনা করা হয় না, যদি আপনার একই গণনার অধীনে এটির প্রয়োজন হয় তবে .toLowerCase () ব্যবহার করুন। এটির জন্য দয়া করে নীচে স্নিপেটটি সন্ধান করুন।

Map<String, Long> couterMap = duplicateList.stream().collect(Collectors.groupingBy(e -> e.toString().toLowerCase(),Collectors.counting()));

আউটপুট: {বিড়াল = 2, গরু = 2, ছাগল = 1, কুকুর = 1}


নীট: কারণ তালিকাটি স্ট্রিংগুলির একটি তালিকা, toString()অযৌক্তিক। আপনি কেবল পারেন:duplicateList.stream().collect(Collectors.groupingBy(e -> e,Collectors.counting()));
টড

5

আপনি যা চান তা হ'ল একটি ব্যাগ - যা একটি সেটের মতো তবে ঘটনাগুলির সংখ্যাও গণনা করে। দুর্ভাগ্যক্রমে জাভা সংগ্রহের কাঠামো - দুর্দান্ত কারণ এগুলিতে একটি ব্যাগ চাপানো নেই। তার জন্য অবশ্যই অ্যাপাচি কমন কালেকশন লিংক পাঠ্যটি ব্যবহার করা উচিত


1
সেরা স্কেলেবল সমাধান এবং, আপনি যদি তৃতীয় পক্ষের জিনিসগুলি ব্যবহার না করতে পারেন তবে কেবল নিজের লিখুন। ব্যাগগুলি তৈরির জন্য রকেট বিজ্ঞান নয়। +1 টি।
paxdiablo

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

2
List<String> list = Arrays.asList("as", "asda", "asd", "urff", "dfkjds", "hfad", "asd", "qadasd", "as", "asda",
        "asd", "urff", "dfkjds", "hfad", "asd", "qadasd" + "as", "asda", "asd", "urff", "dfkjds", "hfad", "asd",
        "qadasd", "as", "asda", "asd", "urff", "dfkjds", "hfad", "asd", "qadasd");

পদ্ধতি 1:

Set<String> set = new LinkedHashSet<>();
set.addAll(list);

for (String s : set) {

    System.out.println(s + " : " + Collections.frequency(list, s));
}

পদ্ধতি 2:

int count = 1;
Map<String, Integer> map = new HashMap<>();
Set<String> set1 = new LinkedHashSet<>();
for (String s : list) {
    if (!set1.add(s)) {
        count = map.get(s) + 1;
    }
    map.put(s, count);
    count = 1;

}
System.out.println(map);

স্ট্যাক ওভারফ্লোতে স্বাগতম! অন্যদের পক্ষে আপনার সমাধানটি বোঝা সহজ করার জন্য আপনার কোডটি ব্যাখ্যা করার বিষয়ে বিবেচনা করুন।
অ্যান্টিমনি

2

আপনি যদি গ্রহগ্রহের সংগ্রহগুলি ব্যবহার করেন তবে আপনি একটি ব্যবহার করতে পারেন Bag। এ কল করে MutableBagকোনও বাস্তবায়ন থেকে ফিরে আসতে পারে ।RichIterabletoBag()

MutableList<String> animals = Lists.mutable.with("bat", "owl", "bat", "bat");
MutableBag<String> bag = animals.toBag();
Assert.assertEquals(3, bag.occurrencesOf("bat"));
Assert.assertEquals(1, bag.occurrencesOf("owl"));

HashBagঅন্ধকার সংগ্রহে বাস্তবায়ন একটি দ্বারা ব্যাক হয় MutableObjectIntMap

দ্রষ্টব্য: আমি গ্রহগ্রাহ সংগ্রহের প্রতিশ্রুতিবদ্ধ।


1

ফ্রিকোয়েন্সি গণনা করতে হ্যাশম্যাপে অ্যারেলিস্টের উপাদানগুলি রাখুন।


কোডের নমুনা দিয়ে টুইট করা ঠিক এটি একই জিনিস।
এমপি।

1

জাভা 8 - অন্য একটি পদ্ধতি

String searched = "bat";
long n = IntStream.range(0, animals.size())
            .filter(i -> searched.equals(animals.get(i)))
            .count();

0

সুতরাং এটি পুরাতন পদ্ধতিতে করুন এবং আপনার নিজস্ব রোল করুন:

Map<String, Integer> instances = new HashMap<String, Integer>();

void add(String name) {
     Integer value = instances.get(name);
     if (value == null) {
        value = new Integer(0);
        instances.put(name, value);
     }
     instances.put(name, value++);
}

জাতির শর্ত এড়ানোর জন্য প্রয়োজনে উপযুক্ত "সিঙ্ক্রোনাইজড" দিয়ে তবে আমি এখনও এটি তার নিজস্ব ক্লাসে দেখতে পছন্দ করব।
paxdiablo

আপনার টাইপো আছে পরিবর্তে হ্যাশম্যাপ প্রয়োজন, যেমন আপনি এটি মানচিত্রে নিয়ে যাচ্ছেন। কিন্তু 1 এর পরিবর্তে 0 রাখার ভুলটি আরও কিছুটা গুরুতর।
আদিল আনসারী

0

আপনি যদি আমার ফোরিচ ডিএসএল এর ব্যবহারকারী হন তবে এটি একটি Countকোয়েরি দিয়ে করা যেতে পারে ।

Count<String> query = Count.from(list);
for (Count<Foo> each: query) each.yield = "bat".equals(each.element);
int number = query.result();

0

আমি এই কেসটিকে আরও কঠিন করতে চাইনি এবং দুটি পুনরুক্তি দিয়ে এটি তৈরি করেছি আমার লাস্টনাম -> ফার্স্ট নেম সহ একটি হ্যাশম্যাপ রয়েছে। এবং আমার পদ্ধতিটি ডুলিকেট ফার্স্টনেম সহ আইটেমগুলি মুছে ফেলা উচিত।

public static void removeTheFirstNameDuplicates(HashMap<String, String> map)
{

    Iterator<Map.Entry<String, String>> iter = map.entrySet().iterator();
    Iterator<Map.Entry<String, String>> iter2 = map.entrySet().iterator();
    while(iter.hasNext())
    {
        Map.Entry<String, String> pair = iter.next();
        String name = pair.getValue();
        int i = 0;

        while(iter2.hasNext())
        {

            Map.Entry<String, String> nextPair = iter2.next();
            if (nextPair.getValue().equals(name))
                i++;
        }

        if (i > 1)
            iter.remove();

    }

}

0
List<String> lst = new ArrayList<String>();

lst.add("Ram");
lst.add("Ram");
lst.add("Shiv");
lst.add("Boss");

Map<String, Integer> mp = new HashMap<String, Integer>();

for (String string : lst) {

    if(mp.keySet().contains(string))
    {
        mp.put(string, mp.get(string)+1);

    }else
    {
        mp.put(string, 1);
    }
}

System.out.println("=mp="+mp);

আউটপুট:

=mp= {Ram=2, Boss=1, Shiv=1}

0
Map<String,Integer> hm = new HashMap<String, Integer>();
for(String i : animals) {
    Integer j = hm.get(i);
    hm.put(i,(j==null ? 1 : j+1));
}
for(Map.Entry<String, Integer> val : hm.entrySet()) {
    System.out.println(val.getKey()+" occurs : "+val.getValue()+" times");
}

0
package traversal;

import java.util.ArrayList;
import java.util.List;

public class Occurrance {
    static int count;

    public static void main(String[] args) {
        List<String> ls = new ArrayList<String>();
        ls.add("aa");
        ls.add("aa");
        ls.add("bb");
        ls.add("cc");
        ls.add("dd");
        ls.add("ee");
        ls.add("ee");
        ls.add("aa");
        ls.add("aa");

        for (int i = 0; i < ls.size(); i++) {
            if (ls.get(i) == "aa") {
                count = count + 1;
            }
        }
        System.out.println(count);
    }
}

আউটপুট: 4


আপনার সমাধান কেন কাজ করা উচিত বা বিদ্যমান সমাধানগুলির চেয়ে ভাল সে সম্পর্কে একটি ব্যাখ্যা যুক্ত করতে স্ট্যাক ওভারফ্লোতে এটি ভাল অনুশীলন। আরও তথ্যের জন্য পড়ুন কিভাবে উত্তর দিতে হয়
স্যামুয়েল লিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.