Освой Processing играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Коллекции

ArrayList

Массивы имеют определённые ограничения. Для сложных задач, в которых требуется добавлять и удалять данные, лучше использовать ArrayList.

Добавьте в скетч новую вкладку (Ctrl+Shift+N для Windows) под именем MyObject. Он будет содержать класс с таким же именем.


class MyObject
{
  float x;
  float y;
  
  MyObject()
  {
    x = random( width );
    y = random( height );
  } 
  
  void update()
  {
    y--;
  } 
  
  void render()
  {
    ellipse( x, y, 60, 60 );
  }
}

Далее в основном скетче можете использовать созданный объект.


// Объявляем список
ArrayList<MyObject> list;

void setup()
{
  size( 640, 480 );
  list = new ArrayList<MyObject>();
  list.add(new MyObject());
  list.add(new MyObject());
} 

void draw()
{
  background( 255 );
  fill( 255, 128 );
} 

void mousePressed()
{
  println( "Элементов в списке : " + list.size());
}

С помощью remove() можно удалить объект из списка. Пройтись по все элементам списка можно через цикл for или через итератор.

HashMap

HashMap похожи на массивы, но для доступа к элементам используют другие методы. Массивы используют целые числа в качестве индекса, а HashMap используют String.

HashMap удобны, когда вам нужно найти определённый элемент в огромном объёме данных.

В HashMap можно хранить только объекты и строки. Но нельзя хранить переменные типа float или int. Для хранения целых или вещественных чисел можно использовать классы Integer или Float из Java.

Добавляются элементы при помощи метода put(). В первом параметре указывается ключ (желательно строка), во втором указывается любой объект.


import java.util.Map;

HashMap<String, Float> hashMap;

void setup()
{
  hashMap = new HashMap<String, Float>();
  hashMap.put("Барсик", 51.30);
  hashMap.put("Мурзик", 34.65);
  hashMap.put("Рыжик", 42.58);
  noLoop();
} 

void draw()
{
  for (Map.Entry me : hashMap.entrySet()) {
    print(me.getKey() + ": ");
    println(me.getValue());
  }
}

Метод isEmpty() проверяет, является ли объект пустым. Получить доступ к элементу можно методом get().


println("Пустой? " + hashMap.isEmpty());
println("Получить объект Рыжик: " + hashMap.get("Рыжик"));

Для получения количества элементов используйте метод size(). Удалить элемент можно при помощи remove().

На главную страницу Processing

Реклама