2016-05-07 6 views
-2

При сортировке arraylist класса Customer (определяемого пользователем), имеющего имя и возраст в качестве атрибутов на основе имени, метод Collections.sort() показывает ошибку, что «тип java.util .Comparator не resolved.it косвенно ссылается из требуемых .class файла.Collections.sort() Метод не работает

package comparable; 
import java.util.*; 

public class Tester { 
    public static void main(String[] args){ 
     List<Customer> custtlist=new ArrayList<Customer>(); 
     Customer c1=new Customer("vikas",1); 
     Customer c2=new Customer("mittal",2); 
     custtlist.add(c1); 
     custtlist.add(c2); 

     System.out.println("Before Sorting"); 
     Iterator<Customer> iterator = custtlist.iterator(); 
     while(iterator.hasNext()){ 
      Customer customer = (Customer) iterator.next(); 
      System.out.println(customer.getCustname()); 
     } 
     Collections.sort(custtlist); 


     System.out.println("After Sorting"); 
     iterator = custList.iterator(); 

     while (iterator.hasNext()) { 
      Customer customer = (Customer) iterator.next(); 
      System.out.println(customer.getCustName()); 
     } 
    } 
} 

//Customer Class 
package comparable; 

public class Customer implements Comparable<Customer> { 
    private String custname; 
    private int age; 

    public Customer(String custname, int age) { 
     this.custname = custname; 
     this.age = age; 
    } 

    public Customer() { 
    } 

    public String getCustname() { 
     return custname; 
    } 

    public void setCustname(String custname) { 
     this.custname = custname; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public int compareTo(Customer c){ 
     return this.custname.compareTo(c.getCustname()); 
    } 
} 
+0

Возможно, ваш метод Customer.compareTo не будет реализован хорошо. –

+0

Не могли бы вы добавить свой соответствующий код? –

+0

Я проверил ваш код, и он работает. В нем есть пара опечаток «iterator = custList.iterator();» должен быть "iterator = custtlist.iterator();" и "System.out.println (customer.getCustName());" должен быть «System.out.println (customer.getCustname());». Метод сортировки работает как ожидалось. – RubioRic

ответ

2

у вас есть очень много опечаток в коде. После того, как я их исправил, компиляция прошла успешно. Я взял на себя смелость, чтобы сделать некоторые улучшения и стиль.

import java.util.*; 

public class Tester { 
    public static void main(String[] args){ 
     List<Customer> customersList = new ArrayList<Customer>(); 
     Customer c1 = new Customer("vikas", 1); 
     Customer c2 = new Customer("mittal", 2); 
     customersList.add(c1); 
     customersList.add(c2); 

     System.out.println("Before Sorting"); 
     for(Customer customer : customersList) { 
      System.out.println(customer.getName()); 
     } 

     Collections.sort(customersList); 
     System.out.println("\nAfter Sorting"); 

     for(Customer customer : customersList) { 
      System.out.println(customer.getName()); 
     } 
    } 
} 

public class Customer implements Comparable<Customer> { 
    private String name; 
    private int age; 

    public Customer(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 

    public Customer() { 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public int compareTo(Customer c){ 
     return this.name.compareTo(c.getName()); 
    } 
} 
Смежные вопросы