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 列表中,运营商 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");
}}