Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package oo.hide;
- public class PointSet {
- private Point[] points;
- //сколько точек уже поклали
- private int currentSize;
- //размер массива, больше или равно, чем число точек
- private int arraySize;
- //по сколько слотов для точек будем добавлять
- private int arraySizeStep = 10;
- public PointSet(int capacity) {
- //создаем необходимую размерность
- points = new Point[capacity];
- //запоминаем ее
- arraySize=capacity;
- //пока не поклали ничего
- currentSize=0;
- }
- public PointSet() {
- //по умолчанию у нас есть место для 10 точек, если не задали обратное
- this(10);
- }
- public void add(Point point) {
- //проверяем, может уже есть такая точка у нас.
- //Ведь в Set не должно быть двух одинаковых точек
- if(contains(point))
- {
- //если есть, выходим
- return;
- }
- //если есть места в массиве, можно добавить Point
- if(currentSize<arraySize)
- {
- points[currentSize]=point;
- }
- //иначе нужно создать массив побольше, затем переписать туда все,
- //что уже есть, и только потом добавить новый Point
- else {
- //запоминаем текущие точки
- Point[] oldPoints=points;
- //увеличиваем размер массива
- arraySize=arraySize+arraySizeStep;
- points=new Point[arraySize];
- //переписываем текущие точки
- for(int i=0;i<currentSize;i++)
- {
- points[i]=oldPoints[i];
- }
- //добавляем в конец новую точку
- points[currentSize]=point;
- }
- //запоминаем, чьто теперь у нас на 1 точку больше
- currentSize=currentSize+1;
- }
- public int size() {
- //просто вернем число точек
- return currentSize;
- }
- public String toString() {
- String hell = "";
- for (int i = 0; i < points.length; i++) {
- if (i == 0) {
- hell += points[i].toString();
- } else {
- hell += (", " + points[i].toString());
- }
- }
- return hell;
- }
- public boolean contains(Point point) {
- //бежим по все точкам
- for(int i=0;i<currentSize;i++)
- {
- //запоминаем текущую точку
- Point currentPoint=points[i];
- //далее нужно сравнить текущую точку с
- //той, что на входе. В зависимости от условий задачи/описания класса Point,
- //это можно сделать несколькими методами. Оставить нужно только 1 метод,
- //либо переписать в 1 метод
- //первый. Метод equals
- if(point.equals(currentPoint))
- {
- return true;
- }
- //второй. Сравнить по координатам
- if(point.X==currentPoint.X&&point.Y==currentPoint.Y)
- {
- return true;
- }
- //третий
- if(point==currentPoint)
- {
- return true;
- }
- }
- //если не нашлась такая же точка, значит она не содержится
- return false;
- }
- public PointSet subtract(PointSet other) {
- return null;
- }
- public PointSet intersect(PointSet other) {
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement