2016-05-07 1 views
-2

名前に基づいて名前と年齢を属性として持つCustomer Class(ユーザ定義)のarraylistをソートする際、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());"にする必要があります。 Sortメソッドは期待どおりに動作します。 – 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()); 
    } 
} 
関連する問題