Кто-нибудь знает, как сортировать стек с помощью array.sort ()? Я просто хочу напечатать упорядоченный список точек по их координатам х. Любая идея? - PullRequest
2 голосов
/ 02 июля 2011
import java.util.*;

public class Point2D
{
  private double x;
  private double y;

  public Point2D(double x, double y)
  {
    this.x = x;
    this.y = y;
  }

  private double Euclidean()
  {
    double Distance = Math.sqrt((x * x) + (y * y));
    return Distance;
  }

  public String toString()
  {
    return "x: " + x + ", y: " + y;
  }

  public static class YOrder implements Comparator<Point2D>
  {    
    public int compare(Point2D self, Point2D other)
    {
      if (self.y > other.y)
        return 1;

      if (self.y < other.y)
        return -1;

      else
        return 0;
    }
  }

  public static void main(String[] args)
  {
    Stack<Point2D> stack = new Stack<Point2D>();

    while (!StdIn.isEmpty())
    {
      double x = StdIn.readDouble();
      double y = StdIn.readDouble();
      stack.push(new Point2D(x,y));
    }

    Arrays.sort(stack);
  }
}

Это для класса, и я не могу использовать Collections или ArrayList.

Ответы [ 2 ]

1 голос
/ 02 июля 2011
Arrays.sort(stack);

должно быть

 Collections.sort(stack, new YOrder());//pass comparator
1 голос
/ 02 июля 2011

Конечно, вам нужно предоставить компаратор.

Arrays.sort(stack.toArray(new Point2D[0](), new Comparator(){
    public int compare(Point2D a, Point2D b)
        { return a.x-b.x; }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...