Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
imperson
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
1

Компаратор

23.05.2013, 17:26. Просмотров 907. Ответов 2
Метки нет (Все метки)

Есть такой код:

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
import java.util.Arrays;
import java.util.Comparator;
 
 
class Product {
 
    private String name;
    private double price;
    private int quantity;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public int getQuantity() {
        return quantity;
    }
    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }
    
    class SortedByName implements Comparator<Product>{
 
        @Override
        public int compare(Product obj1, Product obj2) {
            
            String str1 = ((Product)obj1).getName();
            String str2 = ((Product)obj2).getName();
            
            return str1.compareTo(str2);
            }
        }
    
    
    
    
     class SortedByPrice implements Comparator<Product>{
 
        @Override
        public int compare(Product obj1, Product obj2) {
            
            double price1 = ((Product) obj1).getPrice();
            double price2 = ((Product) obj2).getPrice();
            
            if(price1>price2){
                return 1;
            }
            
            if(price1<price2){
                return -1;
            }
            
            else{
                return 0;
            }
            
        }
        
    }
    
}
И собственно сам массив, который будем сортировать:

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
import java.util.Arrays;
import java.util.Comparator;
 
public class Example1 {
 
    public  void main(String [] args){
        
        Product [] p = new Product[3];
        
        p[0] = new Product();
        p[0].setName("Milk");
        p[0].setPrice(7.56);
        p[0].setQuantity(56);
        
        p[1] = new Product();
        p[1].setName("Coffee");
        p[1].setPrice(17.00);
        p[1].setQuantity(32);
        
        p[2] = new Product();
        p[2].setName("Tea");
        p[2].setPrice(12.50);
        p[2].setQuantity(0);
        
        
        System.out.println("UNSORTED");
        for (Product i :p)
            System.out.println("Name: " + i.getName() +
                                    "Price: " + i.getPrice() +
                                            "Quantity: "+ i.getQuantity());
        System.out.println("SORTED");
        
        Arrays.sort(p, new SortedByPrice());
        
         for(Product i : p) {
                    System.out.println("Name: " + i.getName() + 
                                        " price: " + i.getPrice() + 
" quantity: " + i.getQuantity());
             }      
 
             // отсортируем и выведем данные по названию
             System.out.println("========== sorted by name ===========");
             
             Arrays.sort(p, new SortedByName());
             for(Product i : p) {
                    System.out.println("Name: " + i.getName() + 
                                        " price: " + i.getPrice() + 
" quantity: " + i.getQuantity());
             }
       }
 
}
        
    
}
У меня подчеркивается new SortedByPrice() в последней строке Arrays.sort(p, new SortedByPrice()), предлагает создать такой же класс, хотя класс уже создан. Вроде бы все делаю по примеру, но все-равно возникает ошибка. С чем это может быть связано?

Добавлено через 53 минуты
Пока ждал совета, методом проб и ошибок сам все исправил. ВОПРОС ЗАКРЫТ.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 17:26
Ответы с готовыми решениями:

Компаратор
Есть некий класс public class Dog implements Comparable { private String parrod; private...

Компаратор
Нужно отсортировать 1. за классом 2.за буквой класса 3.за фамилией package dela; import...

Рекурсивный компаратор
Всем доброго времени суток! Пишу компаратор &quot;рекурсивного действия&quot;. Нужно, чтобы при совпадении...

Компаратор и NPE
Здравствуйте, уважаемые форумчане. Java изучаю недавно, и наткнулся на одну загвоздку. Ругается...

HeadSet и компаратор
У меня есть Компаратор для сортировки трисета: public class prodPriceComparator implements...

2
VanillaNinja
9 / 9 / 1
Регистрация: 17.05.2013
Сообщений: 8
23.05.2013, 18:09 2
Эээм... А всем рассказать?
1
imperson
0 / 0 / 0
Регистрация: 25.02.2011
Сообщений: 76
23.05.2013, 18:29  [ТС] 3
Цитата Сообщение от VanillaNinja Посмотреть сообщение
Эээм... А всем рассказать?
не может быть 2 класса public внутри одного исходного файла, следовательно класс Example1 от него нужно избавить, собственно это всё. p.s. имя фаила и имя класса с public должды совпадать, поэтому оставляем только public class Product.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2013, 18:29

Компаратор для дженерика
Добрый день. Пишу компаратор, который должен сортировать разные объекты (дженерики). Если для...

Компаратор
Есть класс: public clas SortedList&lt;E&gt;{ E arrays; } Как сравнить элемента...

Нестатический компаратор
Здравствуйте, как можно создать компаратор, который будет обращаться к нестатическому полю класса?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru