Advertisement
UniQuet0p1

Untitled

Feb 24th, 2022
707
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.96 KB | None | 0 0
  1. package oo.hide;
  2.  
  3. public class PointSet {
  4.  
  5.     private Point[] points;
  6.  
  7.     //сколько точек уже поклали
  8.     private int currentSize;
  9.     //размер массива, больше или равно, чем число точек
  10.     private int arraySize;
  11.     //по сколько слотов для точек будем добавлять
  12.     private int arraySizeStep = 10;
  13.  
  14.  
  15.  
  16.  
  17.     public PointSet(int capacity) {
  18. //создаем необходимую размерность
  19.         points = new Point[capacity];
  20. //запоминаем ее
  21.         arraySize=capacity;
  22. //пока не поклали ничего
  23.         currentSize=0;
  24.     }
  25.  
  26.     public PointSet() {
  27. //по умолчанию у нас есть место для 10 точек, если не задали обратное
  28.         this(10);
  29.     }
  30.  
  31.  
  32.     public void add(Point point) {
  33.  
  34. //проверяем, может уже есть такая точка у нас.
  35. //Ведь в Set не должно быть двух одинаковых точек
  36.         if(contains(point))
  37.         {
  38. //если есть, выходим
  39.             return;
  40.         }
  41.         //если есть места в массиве, можно добавить Point
  42.         if(currentSize<arraySize)
  43.         {
  44.             points[currentSize]=point;
  45.         }
  46. //иначе нужно создать массив побольше, затем переписать туда все,
  47. //что уже есть, и только потом добавить новый Point
  48.         else {
  49. //запоминаем текущие точки
  50.             Point[] oldPoints=points;
  51. //увеличиваем размер массива
  52.             arraySize=arraySize+arraySizeStep;
  53.             points=new Point[arraySize];
  54. //переписываем текущие точки
  55.             for(int i=0;i<currentSize;i++)
  56.             {
  57.                 points[i]=oldPoints[i];
  58.             }
  59. //добавляем в конец новую точку
  60.             points[currentSize]=point;
  61.         }
  62. //запоминаем, чьто теперь у нас на 1 точку больше
  63.         currentSize=currentSize+1;
  64.     }
  65.  
  66.  
  67.     public int size() {
  68. //просто вернем число точек
  69.         return currentSize;
  70.     }
  71.  
  72.  
  73.     public String toString() {
  74.         String hell = "";
  75.         for (int i = 0; i < points.length; i++) {
  76.             if (i == 0) {
  77.                 hell += points[i].toString();
  78.             } else {
  79.                 hell += (", " + points[i].toString());
  80.             }
  81.         }
  82.         return hell;
  83.     }
  84.  
  85.     public boolean contains(Point point) {
  86. //бежим по все точкам
  87.         for(int i=0;i<currentSize;i++)
  88.         {
  89. //запоминаем текущую точку
  90.             Point currentPoint=points[i];
  91. //далее нужно сравнить текущую точку с
  92. //той, что на входе. В зависимости от условий задачи/описания класса Point,
  93. //это можно сделать несколькими методами. Оставить нужно только 1 метод,
  94. //либо переписать в 1 метод
  95.  
  96. //первый. Метод equals
  97.             if(point.equals(currentPoint))
  98.             {
  99.                 return true;
  100.             }
  101.             //второй. Сравнить по координатам
  102.             if(point.X==currentPoint.X&&point.Y==currentPoint.Y)
  103.             {
  104.                 return true;
  105.             }
  106. //третий
  107.             if(point==currentPoint)
  108.             {
  109.                 return true;
  110.             }
  111.         }
  112. //если не нашлась такая же точка, значит она не содержится
  113.         return false;
  114.     }
  115.     public PointSet subtract(PointSet other) {
  116.         return null;
  117.     }
  118.     public PointSet intersect(PointSet other) {
  119.         return null;
  120.     }
  121. }
  122.  
  123.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement