Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / сортировка массива объектов. / 15 сообщений из 15, страница 1 из 1
24.02.2013, 21:51:20
    #38163921
jacky22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
Есть объект с следующими данными: id, name.
Нужно отсортировать по имени.
У меня получается сортировать по id, просто перегружаю метод compareTo, в нем сравниваю this.id с каким-то tmp.id. Но как сделать для строки пока не понял. Подскажите пожалуйста.
...
Рейтинг: 0 / 0
24.02.2013, 21:55:57
    #38163922
jacky22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
и попутно ещё вопрос возник.
Есть класс в нем методы. В одном из методов создал коллекцию но в другом методе она уже не доступна и приходиться создавать заного. Как этого избежать?
...
Рейтинг: 0 / 0
24.02.2013, 22:01:10
    #38163924
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
jacky22Есть объект с следующими данными: id, name.
Нужно отсортировать по имени.
У меня получается сортировать по id, просто перегружаю метод compareTo, в нем сравниваю this.id с каким-то tmp.id. Но как сделать для строки пока не понял. Подскажите пожалуйста.

Если объекты нужно сортировать больше чем одним способом, то для каждого способа создается отдельный класс, который имплементирует интерфейс Comparator, который будет передаваться в метод sort()
...
Рейтинг: 0 / 0
24.02.2013, 22:01:40
    #38163926
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
jacky22и попутно ещё вопрос возник.
Есть класс в нем методы. В одном из методов создал коллекцию но в другом методе она уже не доступна и приходиться создавать заного. Как этого избежать?

Завести поле в классе
...
Рейтинг: 0 / 0
24.02.2013, 22:06:37
    #38163930
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
jacky22Есть класс в нем методы. В одном из методов создал коллекцию но в другом методе она уже не доступна
Так и должно быть, переменная определенная в методе, видна только в методе. Нужно создавать коллекцию в классе, тогда она будет доступна в пакете, если не определена как приватная.
...
Рейтинг: 0 / 0
24.02.2013, 22:24:22
    #38163938
jacky22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
забыл ник,
Так как это сделать для сортировки по алфавиту поля name?
...
Рейтинг: 0 / 0
24.02.2013, 22:25:06
    #38163939
jacky22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
забыл ник,
а заполнять коллекцию тогда где?
...
Рейтинг: 0 / 0
25.02.2013, 02:02:00
    #38164061
jacky22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
Сделал так:
Код: 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.
public int compareTo(Object obj)
  {
    Customer tmp = (Customer)obj;
    char p1,p2,p11,p22;
    p1=this.fio.charAt(0);
    p2=tmp.fio.charAt(0);
    p11=this.fio.charAt(1);
    p22=tmp.fio.charAt(2);
    if(p1 < p2)
    {
      return -1;
    }   
    else if(p1 > p2)
    {
      return 1;
    }
    else if(p1 == p2){
        if(p11 > p22){
            return -1;
        }           
        else if(p11 < p22)
        {
            return 1;
        }
    }
    return 0;  
    
  }


Но это не очень хорошее решение ведь и 3я буква может совпасть. Как сделать так, что бы не присваивать каждую букву?
...
Рейтинг: 0 / 0
25.02.2013, 18:51:32
    #38165349
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
Код: 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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
public class Human implements Comparable<Human> {

    public final int id;
    private String firstName, middleName, lastName;

    public Human(int id, String firstName, String middleName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.middleName = middleName;
        this.lastName = lastName;
    }
    //
    //
    private String fullName;
    public String getFullName() {
        if (fullName == null) {
            StringBuilder sb = new StringBuilder(30);
            sb.append(lastName);
            sb.append(' ');
            sb.append(firstName);
            sb.append(' ');
            sb.append(middleName);
            fullName = sb.toString();
        }
        return fullName;
    }
    //
    //
    private String shortName;
    public String getShortName() {
        if (shortName == null) {
            StringBuilder sb = new StringBuilder(lastName.length() + 6);
            sb.append(lastName);
            sb.append(' ');
            sb.append(firstName.charAt(0));
            sb.append(". ");
            sb.append(middleName.charAt(0));
            sb.append('.');
            shortName = sb.toString();
        }
        return shortName;
    }

    //<editor-fold defaultstate="collapsed" desc="Names' getters">
    public String getLastName() {
        return lastName;
    }
    public String getFirstName() {
        return firstName;
    }
    public String getMiddleName() {
        return middleName;
    }
    //</editor-fold>
    //<editor-fold defaultstate="collapsed" desc="Names' setters">
    public void setLastName(String lastName) {
        this.lastName = lastName;
        clearAssemblies();
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
        clearAssemblies();
    }
    public void setMiddleName(String middleName) {
        this.middleName = middleName;
        clearAssemblies();
    }
    //</editor-fold>

    private void clearAssemblies() {
        fullName = null;
        shortName = null;
    }

    //<editor-fold defaultstate="collapsed" desc="compareTo toString hashCode equals">
    @Override
    public int compareTo(Human anotherHuman) {
        return toString().compareTo(anotherHuman.toString());
    }

    @Override
    public String toString() {
        return getFullName();
    }

    @Override
    public int hashCode() {
        return id;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Human other = (Human) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }
    //</editor-fold>
}
...
Рейтинг: 0 / 0
25.02.2013, 18:59:40
    #38165363
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
avp.mk,

А зачем там StringBuilder? Сложение по-моему нагляднее.
...
Рейтинг: 0 / 0
25.02.2013, 19:32:51
    #38165407
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
Blazkowiczavp.mk,

А зачем там StringBuilder? Сложение по-моему нагляднее.
Заметил что плагин FindBug http://findbugs.sourceforge.net
ругается когда конкатенация c "+" идёт в цикле. Возможно
там есть нюансы. Надо смотреть дизассемблером
во что это выливается. По идее должна быть замена
на StringBuilder но FindBugs штука весьма умная
и возможно ругается не без основания.
...
Рейтинг: 0 / 0
25.02.2013, 19:38:16
    #38165418
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
mayton,
ну да, замена, наверное только в цикле каждый раз новый стрингбилдер создается))
...
Рейтинг: 0 / 0
25.02.2013, 19:39:54
    #38165421
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
maytonругается когда конкатенация c "+" идёт в цикле.

Только цикла выше я что-то не наблюдаю.
...
Рейтинг: 0 / 0
25.02.2013, 19:40:11
    #38165422
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
Что мешает его сбрасывать?
...
Рейтинг: 0 / 0
25.02.2013, 19:43:26
    #38165425
pasha701
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка массива объектов.
http://code.google.com/p/guava-libraries/wiki/CommonObjectUtilitiesExplained#compare/compareTo] http://code.google.com/p/guava-libraries/wiki/CommonObjectUtilitiesExplained#compare/compareTo
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / сортировка массива объектов. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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