Country Code List= 92, 445, 445, 966, 92, 445, 966, 966, 92
Price List = 0.99, 0.91, 0.92, 0.97, 0.93, 0.97, 0.92, 0.97, 1.0
Operator List= A, C, A, B, C, B, A, C, A
ユーザーが国コードを入力すると、最低価格表と対応するオペレーターが見つかるはずです。国コードデータは複製できます。ユニークではありません。たとえば、countrycode がわからないため、92 はどのオペレーターに属しているか、countrycode List のオペレーター A、B、または C に 92 が存在する可能性があります。
以下のコードを書きました。しかし、それには問題があり、
問題 : CountryCode を並べ替えることができますが、次のコードの binarySearch では、対応する最低価格リストを把握できません。最低価格ではないランダムな値が常に表示されます。次のコードの改善を歓迎します。
class Dog implements Comparator<Dog>, Comparable<Dog>{
private int CountryCode;
private double Price;
private String Operator;
Dog(){
}
Dog( int c, double p, String o){
CountryCode= c;
Price= p;
Operator=o;
}
public int getCountryCode(){
return CountryCode;
}
public double getPrice(){
return Price;
}
public String getOperator(){
return Operator;
}
// Overriding the compareTo method
public int compareTo(Dog d){
return CountryCode- d.getCountryCode();
}
// Overriding the compare method to sort the age
public int compare(Dog d, Dog d1){
return d.CountryCode - d1.CountryCode;
}
}
public class Ser {
/**
* @param args
*/
public static void main(String[] args) {
// Takes a list o Dog objects
ArrayList <Dog> list1 = new ArrayList<Dog>();
list1.add(new Dog(92, 0.99 , "A"));
list1.add(new Dog(445, 0.91 , "C"));
list1.add(new Dog(445, 0.92 , "A"));
list1.add(new Dog(966, 0.97 , "B"));
list1.add(new Dog(92, 0.93 , "C"));
list1.add(new Dog(445, 0.97 , "B"));
list1.add(new Dog(966, 0.92, "A"));
list1.add(new Dog(966,0.97, "C"));
list1.add(new Dog(92,1.0, "A"));
// Sorts the array list using comparator
Collections.sort(list1, new Dog());
for(Dog a: list1)//printing the sorted list of ages
System.out.println(a.getCountryCode() +" : "+
a.getOperator()+" : "+ a.getPrice());
int index= Collections.binarySearch(list1, new Dog ( 92,null,null));
if (index>=0)
System.out.println( list1.get(index).getOperator()+ " " + list1.get(index).getPrice());
else
System.out.println("No operator is availible");
}}