"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية فرز مجموعة جافا حسب حقل معين؟

كيفية فرز مجموعة جافا حسب حقل معين؟

تم النشر بتاريخ 2024-11-09
تصفح:426

How to Sort a Java Collection by a Specific Field?

فرز مخصص لمجموعة Java حسب حقل معين

في Java، هناك مهمة شائعة وهي تنظيم البيانات في مجموعة بناءً على معيار مخصص. لنفترض أن لدينا مجموعة من الكائنات مع حقل معرف ونريد فرزها حسب هذا الحقل.

]&&&] لتحقيق ذلك، يمكننا استخدام المقارنة، والتي تسمح لنا بتحديد منطقنا الخاص بالترتيب. وإليك الطريقة:

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; فئة CustomObject تنفذ Comparable { معرف int الخاص؛ public int getId() { return id; } @تجاوز عامة int CompareTo(CustomObject أخرى) { إرجاع this.id -other.id؛ } } فئة عامة CustomCollectionSorting { public static void main(String[] args) { // تهيئة قائمة CustomObject List list = new ArrayList(); list.add(new CustomObject(3)); list.add(new CustomObject(5)); list.add(new CustomObject(1)); list.add(new CustomObject(2)); // إنشاء المقارنة Comparator comparator = new Comparator() { @تجاوز مقارنة int العامة (CustomObject left، CustomObject right) { إرجاع left.getId() - right.getId(); } }; // فرز المجموعة Collections.sort(list, comparator); // عرض القائمة التي تم فرزها System.out.println(list); }
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class CustomObject implements Comparable {
    private int id;
    
    public int getId() { return id; }
    
    @Override
    public int compareTo(CustomObject other) {
        return this.id - other.id;
    }
}

public class CustomCollectionSorting {

    public static void main(String[] args) {
        // Initialize the list of CustomObject
        List list = new ArrayList();
        list.add(new CustomObject(3));
        list.add(new CustomObject(5));
        list.add(new CustomObject(1));
        list.add(new CustomObject(2));

        // Create a comparator
        Comparator comparator = new Comparator() {
            @Override
            public int compare(CustomObject left, CustomObject right) {
                return left.getId() - right.getId();
            }
        };
        
        // Sort the collection
        Collections.sort(list, comparator);

        // Display the sorted list
        System.out.println(list);
    }
}
يمنحك استخدام المقارنة أقصى قدر من المرونة في تحديد منطق الفرز الخاص بك. بدلاً من ذلك، إذا قام CustomObject بتنفيذ Comparable، فيمكنك استخدام طريقة Collections.sort(list) الأبسط.

مع Java 8، يكون فرز المجموعات أسهل:

list.sort((left, right ) -> left.getId() - right.getId()); list.sort(Comparator.comparing(CustomObject::getId));
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class CustomObject implements Comparable {
    private int id;
    
    public int getId() { return id; }
    
    @Override
    public int compareTo(CustomObject other) {
        return this.id - other.id;
    }
}

public class CustomCollectionSorting {

    public static void main(String[] args) {
        // Initialize the list of CustomObject
        List list = new ArrayList();
        list.add(new CustomObject(3));
        list.add(new CustomObject(5));
        list.add(new CustomObject(1));
        list.add(new CustomObject(2));

        // Create a comparator
        Comparator comparator = new Comparator() {
            @Override
            public int compare(CustomObject left, CustomObject right) {
                return left.getId() - right.getId();
            }
        };
        
        // Sort the collection
        Collections.sort(list, comparator);

        // Display the sorted list
        System.out.println(list);
    }
}
توضح هذه الأمثلة كيفية فرز مجموعة Java بناءً على حقل معين، مما يسهل تنظيم البيانات ومعالجتها وفقًا لمتطلبات محددة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3