Cześć programiści mam zadanie posortować metodą TreeSet monitory według ceny oraz rozdzielczości w przypadku LinkedList wszystko sortowało się bez problemu jednak na TreeSet sortuje tylko cenami. Przeszukałem ksiazki internet czy nasze forum i nie byłem w stanie tego naprawić załączam kod dla lepszego zobrazowania:
Mój main:
package test2_treeset;
public class Test2_treeset {
public static void main(String[] args) {
Allegro allegro = new Allegro();
allegro.add(new Monitor("Dell", 65, 5000));
allegro.add(new Monitor("Apple", 9.5, 6000));
allegro.add(new Monitor("Dell", 2.5, 100));
allegro.add(new Monitor("Samsung", 5.5, 4000));
allegro.add(new Monitor("Dell", 1.5, 3000));
allegro.add(new Monitor("Intel", 0.5, 2000));
System.out.println("Cenami\n");
allegro.Cenami();
System.out.println("------------------------------------\n");
System.out.println("Rozdzielczosciami:\n");
allegro.Rozdz();
}
}
Klasa Monitor
package test2_treeset;
/* implements Comparable<Monitor>*/
public class Monitor implements Comparable<Monitor>
{
private String firma;
private double resolution;
private double cena;
public Monitor() {
this.firma = "nieznana";
this.resolution = 0.0;
this.cena = 0;
}
public Monitor(String firma, double resolution, double cena) {
this.firma = firma;
this.resolution = resolution;
this.cena = cena;
}
String getFirma() {
return this.firma;
}
double getCena() {
return this.cena;
}
double getResolution() {
return this.resolution;
}
void Show() {
System.out.println("Monitor: " + this.firma + " Rozdzielczosc: " + this.resolution + " Cena: " + this.cena);
}
@Override
public int compareTo(Monitor o) {
if(this.cena>o.cena)
{
return 1;
}
else if(this.cena<o.cena)
{
return -1;
}
else
{
if(this.resolution>o.resolution)
{
return 1;
}
else if(this.resolution<o.resolution)
{
return -1;
}
else
{
return 0;
}
}
}
}
Klasa Allegro
package test2_treeset;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.TreeSet;
public class Allegro {
// LinkedList<Monitor> list;
Iterator<Monitor> iterator;
TreeSet<Monitor> treeset;
public Allegro() {
this.treeset = new TreeSet<>();
}
void add(Monitor monitor) {
this.treeset.add(monitor);
}
void Cenami() {
iterator = treeset.iterator();
while (iterator.hasNext()) {
iterator.next().Show();
}
}
void Rozdz() {
//Collections.sort(lista);
class Rozdzielczosciami implements Comparator<Monitor> {
@Override
public int compare(Monitor o1, Monitor o2) {
if (o1.getResolution() > o2.getResolution())
{
return 1;
}
else if (o1.getResolution() < o2.getResolution())
{
return -1;
}
else
{
return 0;
}
}
}
iterator = treeset.iterator();
while (iterator.hasNext()) {
iterator.next().Show();
}
}
}