Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / как отсортировать цифры в массифе (преобразованные в строковые данные) / 7 сообщений из 7, страница 1 из 1
21.11.2019, 08:42
    #39892171
Zafar Z
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как отсортировать цифры в массифе (преобразованные в строковые данные)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
package com.company;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Main {


    private static ArrayList<Student> StudentList;

    public static void main(String[] args) {

        Student student;
        StudentList = new ArrayList<Student>();

         student = new Student("dfghdfg", "sdfgsdf","9");
        StudentList.add(student);

        student = new Student("dfhdf", "ghjkghjk","10");
        StudentList.add(student);

        student = new Student("dfhfdghdfgh", "3adasdasd","7");
        StudentList.add(student);

        student = new Student("dfghdfg", "sdfgsdf","9");
        StudentList.add(student);

        student = new Student("dfhdf", "ghjkghjk","10");
        StudentList.add(student);

        student = new Student("dfhfdghdfgh", "3adasdasd","7");
        StudentList.add(student);


        Collections.sort(StudentList, new Comparator<Student>() {
            public int compare(Student s1, Student s2) {
                // notice the cast to (Integer) to invoke compareTo
                return ((String)s1.getCoeff()).compareTo(s2.getCoeff());
            }
        });

        System.out.printf("Ordered: %s%n", StudentList);

    }
}




Резултат:
Ordered: [dfhdf ghjkghjk 10, dfhdf ghjkghjk 10, dfhfdghdfgh 3adasdasd 7, dfhfdghdfgh 3adasdasd 7, dfghdfg sdfgsdf 9, dfghdfg sdfgsdf 9]
...
Рейтинг: 0 / 0
21.11.2019, 09:51
    #39892195
Zafar Z
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как отсортировать цифры в массифе (преобразованные в строковые данные)
Этот вариант получше но опять таки 11 и 13 в неправильном порядке стоит:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
package com.company;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Main {


    private static ArrayList<Student> StudentList;

    public static void main(String[] args) {

        Student student;
        StudentList = new ArrayList<Student>();




         student = new Student("dfghdfg", "sdfgsdf","5");
        StudentList.add(student);

        student = new Student("dfhdf", "ghjkghjk","1");
        StudentList.add(student);

        student = new Student("dfhfdghdfgh", "3adasdasd","7");
        StudentList.add(student);

        student = new Student("dfghdfg", "sdfgsdf","9");
        StudentList.add(student);

        student = new Student("dfhdf", "ghjkghjk","8");
        StudentList.add(student);

        student = new Student("dfhfdghdfgh", "3adasdasd","11");
        StudentList.add(student);
        student = new Student("dfhfdghdfgh", "3adasdasd","13");
        StudentList.add(student);



        Collections.sort(StudentList, new Comparator<Student>() {
            public int compare(Student s1, Student s2) {
                // notice the cast to (Integer) to invoke compareT

                return (int)s1.getCoeff().compareTo(s2.getCoeff());
            }
        });

        System.out.printf("Ordered: %s%n", StudentList);

    }
}
...
Рейтинг: 0 / 0
21.11.2019, 09:51
    #39892196
Zafar Z
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как отсортировать цифры в массифе (преобразованные в строковые данные)
Ordered: [dfhdf ghjkghjk 1, dfhfdghdfgh 3adasdasd 11, dfhfdghdfgh 3adasdasd 13, dfghdfg sdfgsdf 5, dfhfdghdfgh 3adasdasd 7, dfhdf ghjkghjk 8, dfghdfg sdfgsdf 9]
...
Рейтинг: 0 / 0
21.11.2019, 11:58
    #39892256
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как отсортировать цифры в массифе (преобразованные в строковые данные)
Автор, строки сортируются лексикографически. Чтобы отсортировать числа по порядку нужно при сравнении преобразовать строки в число. Что должно быть в голове, чтобы такая простая мысль не пришла в голову?
...
Рейтинг: 0 / 0
21.11.2019, 13:20
    #39892305
Zafar Z
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как отсортировать цифры в массифе (преобразованные в строковые данные)
Я конечно извиняюсь, взаимосвязанных ошибочных факторов много было, пришлось каждую ветку по очередности выполнять в других проектах, да и визуально казалось что не сортируется так как плавающее число было слишком большое, в итоге double умножил на 100000 и визуально получил нужный результат, да и фактор кода тоже подводил, правильнее было надо так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  Collections.sort( arrayList1, new Comparator<Student>() {
                    public int compare(Student s1, Student s2) {
                        // notice the cast to (Integer) to invoke compareT
                        if (s1.getCoeff() < s2.getCoeff()) {
                            return -1;
                        } else if (s1.getCoeff() > s2.getCoeff()) {
                            return 1;
                        } else {
                            return 0;
                        }
                    }
                });



в любом случае спасибо!
...
Рейтинг: 0 / 0
21.11.2019, 13:22
    #39892307
Zafar Z
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как отсортировать цифры в массифе (преобразованные в строковые данные)
Да ещё вопрос как в последнем коде сделать так чтобы сортировка не была по возрастанию а по убыванию?
...
Рейтинг: 0 / 0
21.11.2019, 13:32
    #39892318
Zafar Z
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как отсортировать цифры в массифе (преобразованные в строковые данные)
Все нашел:


(s1.getCoeff() > s2.getCoeff())
else if (s1.getCoeff() < s2.getCoeff())



тема закрыта!



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 Collections.sort(StudentList, new Comparator<Student>() {
            public int compare(Student s1, Student s2) {
                // notice the cast to (Integer) to invoke compareT
                if (s1.getCoeff() > s2.getCoeff()) {
                    return -1;
                } else if (s1.getCoeff() < s2.getCoeff()) {
                    return 1;
                } else {
                    return 0;
                }
            }
            });
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / как отсортировать цифры в массифе (преобразованные в строковые данные) / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]