powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / как отсортировать цифры в массифе (преобразованные в строковые данные)
7 сообщений из 7, страница 1 из 1
как отсортировать цифры в массифе (преобразованные в строковые данные)
    #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
как отсортировать цифры в массифе (преобразованные в строковые данные)
    #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
как отсортировать цифры в массифе (преобразованные в строковые данные)
    #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
как отсортировать цифры в массифе (преобразованные в строковые данные)
    #39892256
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор, строки сортируются лексикографически. Чтобы отсортировать числа по порядку нужно при сравнении преобразовать строки в число. Что должно быть в голове, чтобы такая простая мысль не пришла в голову?
...
Рейтинг: 0 / 0
как отсортировать цифры в массифе (преобразованные в строковые данные)
    #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
как отсортировать цифры в массифе (преобразованные в строковые данные)
    #39892307
Zafar Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ещё вопрос как в последнем коде сделать так чтобы сортировка не была по возрастанию а по убыванию?
...
Рейтинг: 0 / 0
как отсортировать цифры в массифе (преобразованные в строковые данные)
    #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
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / как отсортировать цифры в массифе (преобразованные в строковые данные)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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