Добавлено четвёртое задание ЛР2 - сортировка списка

This commit is contained in:
Victor 2013-10-04 18:23:40 +03:00
parent 48ac144239
commit 2233d948a0
2 changed files with 56 additions and 2 deletions

View File

@ -13,7 +13,7 @@ public class LR_2 implements ILabRab {
"Копирование и сравнение массивов", "Копирование и сравнение массивов",
"Двумерный массив строк", "Двумерный массив строк",
"Эллипсы и круги. Массив", "Эллипсы и круги. Массив",
"4", "Эллипсы и круги 2. Сортировка списка",
"5" "5"
}; };
@ -30,7 +30,7 @@ public class LR_2 implements ILabRab {
LR_2_Tasks.getInstance().task3(); LR_2_Tasks.getInstance().task3();
break; break;
case 3: case 3:
LR_2_Tasks.getInstance().task4();
break; break;
case 4: case 4:

View File

@ -1,6 +1,10 @@
package tse.lr2; package tse.lr2;
import java.awt.Point; import java.awt.Point;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/** /**
* *
@ -39,6 +43,25 @@ public class LR_2_Tasks {
} }
} }
public void task4() {
makeObjects();
ArrayList<Ellipse> ellipses = new ArrayList<>();
ellipses.add(ellipse1);
ellipses.add(ellipse2);
ellipses.add(ellipse3);
ellipses.add(circle1);
ellipses.add(circle2);
printList(ellipses);
System.out.println("Collections.sort");
ArrayList<Ellipse> copy = (ArrayList<Ellipse>) ellipses.clone();
Collections.sort(copy, squareComparator);
printList(copy);
System.out.println("user sort");
copy = (ArrayList<Ellipse>) ellipses.clone();
userSort(copy, squareComparator);
printList(copy);
}
private void makeObjects() { private void makeObjects() {
ellipse1 = new Ellipse( ellipse1 = new Ellipse(
new Point(2, 2), new Point(8, 2), new Point(2, 2), new Point(8, 2),
@ -55,4 +78,35 @@ public class LR_2_Tasks {
point1 = new Point(3, 3); point1 = new Point(3, 3);
} }
private void printList(List<Ellipse> list) {
for (int i = 0; i < list.size(); i++) {
Ellipse ellipse = list.get(i);
System.out.println( String.format("%2d. %f", i + 1, ellipse.getSquare()) );
}
}
private void userSort(List<Ellipse> list, Comparator<Ellipse> comparator) {
final int size = list.size();
for (int i = 0; i < size - 1; i++) {
int min = i;
for (int j = i + 1; j < size; j++) {
if (comparator.compare(list.get(j), list.get(min)) < 0) {
min = j;
}
}
Ellipse temp = list.get(i);
list.set(i, list.get(min));
list.set(min, temp);
}
}
private final Comparator<Ellipse> squareComparator = new Comparator<Ellipse>() {
@Override
public int compare(Ellipse e1, Ellipse e2) {
return Double.compare(e1.getSquare(), e2.getSquare());
}
};
} }