2015-09-30 4 views
1

Осмотритесь и не можете найти/понять, как работает сравнение объектов внутри массива. В приведенном ниже коде, как бы я мог сравнивать объекты, в массиве, основанном конкретно на стоимости двух? Затем сортировка массива, чтобы стоимость была в порядке убывания?Как сравнивать и сортировать объекты внутри массива

public class PC 
{ 
private int VRAM; 
public String Processor; 
public int RAM; 
public int Harddrive; 
public double Cost; 


public Desktop(String Proc, int ram, int HD, int Vram) 
{ 
     Processor = Proc; 
     RAM = ram; 
     Harddrive = HD; 
     VRAM = Vram ;  

} 

public double getCost() 
{ 
    Cost = 250 + (5.50*RAM) + (0.10*Harddrive) + (0.30*VRAM); 
    return Cost; 

} 
public String toString() 
{   
    return "Desktop\n" + "--------\n" + "CPU: " + Processor + "\nRAM: " + RAM + "GB\n" + "HDD: " + Harddrive + "GB\n" + "VRAM: " + VRAM + "MB" + "\nCost: $" + Cost + "\n"; 
} 

}

public class Main 
{ 
public static void main(String[] args)//Main method has been tested throughly, but the output seems to get a bit nasty 
{  
    Computer[] ComputerArray = new Computer[5];//when to many are called all out once. 
    ComputerArray[0] = (new PC ("Intel Core i7 2600k", 4, 700, 1400)); 
    ComputerArray[1] = (new PC ("AMD FX-8150", 16, 1950, 1100)); 
} 

}

+0

Пожалуйста, убедитесь, что все имена переменных начинаются с строчной буквы. то есть 'ComputerArray' должен быть' computerArray' – CubeJockey

+0

Возможный дубликат [Java сравнение пользовательских объектов] (http://stackoverflow.com/questions/5807704/java-comparing-custom-objects) – azurefrog

ответ

2

Вы просто создать логотипо компаратор и метод сортировки пользовательского массива.

Компаратор:

public class CostComparator implements Comparator<Computer> { 
    @Override 
    public int compare(Computer o1, Computer o2) { 
     return o1.getCost().compareTo(o2.getCost()); 
    } 
} 

и

Arrays.sort(computerArray , costComparator); 

Пожалуйста, измените имена переменных. Имена переменных начинаются с строчных букв.

+0

хорошо, спасибо, плохо пропустите его, и не забудьте изменить переменные экземпляра – Consultion

Смежные вопросы