Упорядочение результатов файла с ArrayList и сравнить с - PullRequest
0 голосов
/ 27 марта 2020

Мне нужно заказать arrayList, который содержит строки из файла по идентификатору учетной записи, а затем по зарплате, чтобы получить такой результат:

CuentaAhorro   : 11111111A (Alicia)   Saldo  111,11
CuentaAhorro   : 12345678A (Lucas)    Saldo 5100,00
CuentaCorriente: 22222222B (Peio)     Saldo  222,22
CuentaAhorro   : 33333333C (Isabel)   Saldo 4433,33
CuentaCorriente: 33333333C (Isabel)   Saldo 3333,33
CuentaAhorro   : 87654321A (Asier)    Saldo 3000,00

Мой массив arrayList вызывает метод CompareTo из Банка. java.


 public void ordenarCuentas() {

            Collections.sort(cuentas);

        }

Вызывается метод compareTo в абстрактном классе Account с сопоставимым интерфейсом:

   @Override
   public int compareTo(Cuenta unaCuenta) {

      Cliente unTitular = unaCuenta.titular;

      if(unTitular.toString().equals(unaCuenta.titular.toString()) == true) {
            return 0;
//         if(saldo < unaCuenta.saldo) {
//             return -1;
//          } else if (saldo > unaCuenta.saldo) {
//             return 1;
//          } else {
//             return 0;
//          }
      }
        return -1;    
}

Мне нужно проверить, передан ли объект 'Cuenta unaCuenta' как Параметр имеет тот же номер счета, что и другой, и затем сортируется по сумме денег на счете, однако я не уверен, как правильно выполнить условие, как вы можете видеть, с комментариями, если я получу зарплату в порядке убывания но не идентификаторы учетной записи.

Объект Cuenta unaCuenta содержит имя, содержащее номер и имя учетной записи.

Объект Cliente unTitular содержит номер и имя учетной записи.

Может кто-нибудь протяните мне руку, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

Спасибо всем за комментарии. В следующий раз я переведу код испанского sh на английский sh. Я опубликую свое решение, если кто-то сталкивается с этим вопросом.

(в моем случае мне пришлось использовать сопоставимый интерфейс и метод сравнения).

 @Override
   public int compareTo(Account anAccount) {

        String b = this.title.toString();
        Client aTitle = anAccount.title;
        String c = aTitle.toString();

        if(b.compareTo(c) == 0) {
            if(balance == anAccount.balance) {
               return 0;
            } else if (balance < anAccount.balance) {
               return 1;
            } else {
               return -1;
            }
           } 
            return b.compareTo(c);

         }

Как уже было сказано, у меня был чтобы сначала сравнить оба значения объекта, если они совпадают, я проверяю состояние баланса для изменения ордера.

-1 = object is less than the parameter.
0 = when both objects are the same.
1 = the object is more than the parameter.

И я вызвал метод из банка. java class with:

Collections.sort(cuentas);

Где cuentas - ArrayList.

0 голосов
/ 27 марта 2020

Я не могу понять это очень четко из-за языкового барьера. Но если у вас есть массив, вы можете вызвать метод сортировки для него, передавая компаратор, чтобы получить желаемую сортировку, что-то вроде ниже.

Это просто дать вам представление

 ArrayList<String> list = new ArrayList<>();
     list.sort(new Comparator() {

        @Override
        public int compare(Object o1, Object o2) {

            if(o1.account.equals(o2.account)) return 0;
            return o1.amount - o2.amount;
        }

     });

как лямбда

ArrayList<String> list = new ArrayList<>();
     list.sort((o1,o2) -> 
                          if(o1.account.equals(o2.account)) return 0;
                          return o1.amount - o2.amount; 
     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...