ক্রমান্বয়ে ক্রমে অ্যারেলিস্ট <দীর্ঘ> বাছাই কিভাবে?


100

ArrayList<Long>ক্রমহ্রাসমান ক্রমে জাভাতে কীভাবে বাছাই করবেন ?

উত্তর:


241

আপনার জন্য এখানে একটি উপায় list:

list.sort(null);
Collections.reverse(list);

বা Comparatorবিপরীত পদক্ষেপটি বাছাই করতে এবং বাদ দিতে আপনি নিজের প্রয়োগ করতে পারেন:

list.sort((o1, o2) -> o2.compareTo(o1));

বা আরও সহজভাবে ব্যবহার করুন Collections.reverseOrder()যেহেতু আপনি কেবল বিপরীত হন:

list.sort(Collections.reverseOrder());

6
l1 > l2 ? -1 : l1 == l2 ? 0 : 1এই কোড হাস্যকর। o1.compareTo(o2)তারপর ব্যবহার করুন ।
ইল্লেক্স

4
@ ইলিয়া: ওহ হ্যাঁ, ভাল বিষয়, যদিও এটি o2.compareTo(o1)এখানে থাকা দরকার :)
হোয়াইটফ্যাঙ্গ 34

4
list.sort (Collections.reversOrder ());
টিউনিক্স

list.sort((o1, o2) -> o2.compareTo(o1))
থাম্বস

27
Comparator<Long> comparator = Collections.reverseOrder();
Collections.sort(arrayList, comparator);

কেবলমাত্র সেই পরিবর্তনশীল ঘোষণায় জেনেরিক যুক্তি দিয়ে।
টম হাটিন -

18

আপনি নীচের দেওয়া নিম্নলিখিত কোড ব্যবহার করতে পারেন;

Collections.sort(list, Collections.reverseOrder());

অথবা আপনি যদি কাস্টম তুলনামূলক ব্যবহার করতে যাচ্ছেন তবে নীচে যেমনটি দেওয়া হয়েছে তেমন ব্যবহার করতে পারেন

Collections.sort(list, Collections.reverseOrder(new CustomComparator());

যেখানে কাস্টমকম্পরেটর একটি তুলনামূলক শ্রেণি যা তালিকার উপস্থিত বস্তুর সাথে তুলনা করে।


10

জাভা 8

ভাল জাভা 8 এ করা এত মজা এবং সহজ

Collections.sort(variants,(a,b)->a.compareTo(b));
Collections.reverse(variants);

লাম্বদা এক্সপ্রেশন এখানে রক !!!

a এবং b এর তুলনা করার জন্য যদি আপনার একাধিক লাইনের যুক্তি প্রয়োজন হয় তবে আপনি এটি লিখতে পারেন

Collections.sort(variants,(a,b)->{
    int result = a.compareTo(b);
    return result;
});

4
আমি মনে করি আমরা যদি এটি b.compareTo (ক) এ পরিবর্তন করি তবে আমাদের সংগ্রহটি বিপরীত করার দরকার হবে না।
জাওহুতুত

@ জাওহুতুত, সম্পূর্ণ সত্য! উল্টো উল্লিখিত () যাতে আপনি বিকল্পগুলি জানতে পারেন, পছন্দটি আপনার
azerafati

4
আপনার কি দীর্ঘকে দীর্ঘ রূপান্তর করতে হবে?
ব্লু ই


3

লামদাসের জন্য যেখানে আপনার দীর্ঘ মানটি কোনও বস্তুর কোথাও রয়েছে আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি:

.sorted((o1, o2) -> Long.compare(o1.getLong(), o2.getLong()))

বা আরও ভাল:

.sorted(Comparator.comparingLong(MyObject::getLong))


2

Collections.sort()ক্রমহ্রাসমান ক্রম সরবরাহ করে এমন একটি তুলনামূলক ব্যবহার করে । জন্য Javadoc দেখুন Collections.sort


2

নীচে হিসাবে আমাদের নিজস্ব তুলনামূলক বাস্তবায়নের জন্য আরও সাধারণ পন্থা

Collections.sort(lst,new Comparator<Long>(){
                public int compare(Long o1, Long o2) {
                    return o2.compareTo(o1);
                }
            });

1

নিম্নলিখিত পদ্ধতিটি তালিকাটিকে অবতরণ ক্রমে সাজিয়ে রাখবে এবং ' নাল ' মানগুলিও পরিচালনা করবে , যদি আপনার কোনও নাল মান থাকে তবে কালেকশনস.সোর্ট () নালপয়েন্টার এক্সেকশনটি নিক্ষেপ করবে

      Collections.sort(list, new Comparator<Long>() {
          public int compare(Long o1, Long o2) {
                  return o1==null?Integer.MAX_VALUE:o2==null?Integer.MIN_VALUE:o2.compareTo(o1);

        }
    });

0

আপনি এ এর পরিবর্তে ArrayListএকটি বাছাই করতে পারেন । একটি পূর্ণসংখ্যার অ্যারের জন্য আমার আগে যে প্রশ্নটি হয়েছিল তার উদাহরণ এখানে। আমি "নম্বর" এর জন্য স্থানধারকের নাম হিসাবে ব্যবহার করছি ।TreeSetcomparatorArrayList


     import.java.util.*;
        class MyClass{
        public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        ArrayList<Integer> numbers = new ArrayList<Integer>(); 

        TreeSet<Integer> ts = new TreeSet<Integer>(numbers);
        numbers = new ArrayList<Integer>(ts);
        System.out.println("\nThe numbers in ascending order are:");
        for(int i=0; i<numbers.size(); i++)
        System.out.print(numbers.get(i).intValue()+" ");
        System.out.println("\nThe numbers in descending order are:");
        for(int i=numbers.size()-1; i>=0; i--)
        System.out.print(numbers.get(i).intValue()+" ");
    }
}

তবে TreeSetসদৃশ মান সংরক্ষণ করে না।

0

সুতরাং, আমি এমন কিছু বিষয় আনতে চাই যা আমি মনে করি যেটি গুরুত্বপূর্ণ এবং আমি মনে করি আপনার বিবেচনা করা উচিত। রানটাইম এবং স্মৃতি। বলুন যে আপনার একটি তালিকা আছে এবং এটি বাছাই করতে চান, ভাল আপনি পারেন, এখানে একটি বিল্ট বাছাই করা আছে বা আপনি নিজের তৈরি করতে পারেন। তারপরে আপনি বলেন, তালিকাটি উল্টাতে চাই। এটি উত্তর যা উপরে তালিকাভুক্ত রয়েছে।

আপনি যদি সেই তালিকাটি তৈরি করে থাকেন তবে এটি সঞ্চয় করার জন্য আলাদা কোনও ডেটাস্ট্রাকচার ব্যবহার করা ভাল এবং তারপরে এটি কেবল অ্যারেতে ফেলে দেওয়া ভাল।

স্তূপগুলি কেবল এটি করে। আপনি ডেটাতে ফিল্টার করেন, এবং এটি সবকিছু পরিচালনা করবে, তারপরে আপনি বস্তুর বাইরে সমস্ত কিছু পপ করতে পারেন এবং এটি বাছাই করা হবে।

আরেকটি বিকল্প হ'ল মানচিত্র কীভাবে কাজ করে তা বোঝা হবে। অনেক সময়, কোনও মানচিত্র বা হ্যাশম্যাপের কোনও জিনিস বলা হয়, এর পিছনে অন্তর্নিহিত ধারণা থাকে have

উদাহরণ হিসেবে বলা যায় .... আপনি কী-মান জোড়া একটি গুচ্ছ খাবার যেখানে চাবি দীর্ঘ, এবং আপনি সব উপাদান যোগ করুন, আপনি কি করতে পারেন: .keysঅথচ তা তোমাদের কাছে একটি সাজানো তালিকা আপনাআপনি ফিরে আসবে।

এটি আপনার সাজানোর এবং পরবর্তী বিপরীতগুলি দিয়ে কীভাবে চালিয়ে যাওয়া উচিত বলে আমি মনে করি তার আগে আপনি কীভাবে ডেটা প্রক্রিয়াকরণ করবেন তার উপর নির্ভর করে


0

তুলনাকারীর তুলনা পদ্ধতিটি বস্তুর তুলনা করতে ব্যবহার করা যেতে পারে এবং তারপরে reversed()আদেশটি বিপরীত করতে পদ্ধতি প্রয়োগ করা যেতে পারে -

list.stream().sorted(Comparator.comparing(Employee::getName).reversed()).collect(toList());

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