Небольшие куски кода по сортировке
package main;
import java.util.Iterator;
public class Point implements Comparable{
private int X;
private int Y;
private int Z;
public Point(int x, int y, int z) {
super();
X = x;
Y = y;
Z = z;
}
public int getX() {
return X;
}
public void setX(int x) {
X = x;
}
public int getY() {
return Y;
}
public void setY(int y) {
Y = y;
}
public int getZ() {
return Z;
}
public void setZ(int z) {
Z = z;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Point [X=");
builder.append(X);
builder.append(", Y=");
builder.append(Y);
builder.append(", Z=");
builder.append(Z);
builder.append("]");
return builder.toString();
}
//@Override
public int compareTo(Point o) {
return this.X - o.X;
}
}
package main;
import java.util.function.Consumer;
public class PointConsumer implements Consumer {
@Override
public void accept(Point t) {
if (t.getX() > 100 || t.getY() > 100 || t.getZ() > 100){
System.out.println("Неправильно задана координата: " + t.toString());
}
else{
System.out.println("ПРАВИЛЬНАЯ КООРДИНАТА: " + t.toString());
}
}
}
package main;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
public class MainProjectClass {
private static final String Separatishe = "Это сепаратор!!!!!";
public static void main(String[] args) {
List points = new ArrayList<>();
Random rnd = new Random();
for(int i = 0; i < 1000; i ++){
points.add(new Point(rnd.nextInt(300), rnd.nextInt(300), rnd.nextInt(300)));
}
Iterator iter = points.iterator();
while (iter.hasNext()){
System.out.println(iter.next());
}
System.out.println("Выведем неправильные координаты:");
iter = points.iterator();
iter.forEachRemaining(new PointConsumer());
//в функциональном стиле
points.forEach(value-> {System.out.println(value); System.out.println("-----");});
points.forEach(value -> System.out.println(value));
iter = points.iterator();
iter.forEachRemaining(value -> {System.out.println("через итератор: " + value.toString()); System.out.println(Separatishe);});
//сортируем через вспомогательный класс Collections используя реализуемый в Point компаратор
Collections.sort(points);
//сортируем прямо через коллекцию использую компаратор реализуемый в Point
points.sort(null);
//сортируем используя новый компаратор реализованный в анонимном классе
points.sort(new Comparator(){
@Override
public int compare(Point p1, Point p2){
return p1.getZ() - p2.getZ();
}
});
//сортируем в функциональном стиле - для сравнения используется компаратор класса Point
points.sort((value1, value2) -> value1.compareTo(value2));
//сортируем в функциональном стиле - компаратор реализуем тут же
points.sort((value1, value2) -> {return value1.getY() - value2.getY();});
points.forEach(value -> System.out.println(value.toString()));
}
}
|