Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 516884

Можно ли передавать условие сортировки массива - Java SE (J2SE)

$
0
0
Доброго всем времечка суток! Порылся-порылся в разных всяких источниках и понял, что лучше взять "помощь друга". То ли запросы не правильно формулировал, то ли просто не повезло, но я так и не понял можно ли передать в параметры IF разные условия, или нужно каждый раз писать сортировку заново для разных условий? Собственно вот код:
Код:

import java.util.Scanner;

public class MyCollection {

    int numberSchool;
    String namePupil;
    String soNamePupil;
    long phoneNumber;

    public MyCollection(int school, String name, String soName, long phone) {
        this.numberSchool = school;
        this.namePupil = name;
        this.soNamePupil = soName;
        this.phoneNumber = phone;
    }

    public MyCollection add() {
        int school = new Scanner(System.in).nextInt();
        String name = new Scanner(System.in, "CP1251").nextLine();
        String soName = new Scanner(System.in, "CP1251").nextLine();
        long phone = new Scanner(System.in).nextLong();
        return new MyCollection(school, name, soName, phone);
    }

    public static MyCollection[] addingCollection() {
        int n = 4;
        MyCollection added = new MyCollection(0, null, null, 0);
        MyCollection[] myC = new MyCollection[n];
        for (int i = 0; i < myC.length; i++) {
            myC[i] = added.add();
        }
        return myC;
    }

    public static void sortedBySchool(MyCollection[] myC) {
        for (int i = 0; i < myC.length; i++) {
            for (int j = 0; j < myC.length - i - 1; j++) {
//                if (myC[j].numberSchool > myC[j + 1].numberSchool) { //сортировка по номеру школы
//                if (myC[j].phoneNumber > myC[j + 1].phoneNumber) { //сортировка по номеру телефона
                if (myC[j].soNamePupil.compareTo(myC[j + 1].soNamePupil) > 0) { //сортировка по фамилии
                    MyCollection temp = myC[j];
                    myC[j] = myC[j + 1];
                    myC[j + 1] = temp;
                }
            }
        }
        for (MyCollection print : myC) {
            System.out.println(print.toString());
        }
    }

    public static void main(String[] args) {
        sortedBySchool(addingCollection());
    }

    @Override
    public String toString() {
        return "школа № " + numberSchool + " " + namePupil + " " + soNamePupil + " тел.: " + phoneNumber;
    }
}

Строки 38 и 39 закомментированы - вот эти то параметры и хотелось бы передавать при выборе в меню сортировки. Возможно такое и, если да, то как реализуется? Или проще написать три разных метода и не заморачиваться?
Спасибо!

Viewing all articles
Browse latest Browse all 516884

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>