Как сохранить значения в лучшей структуре коллекции Java - PullRequest
0 голосов
/ 13 ноября 2018

Какой тип структуры коллекции лучше всего подходит для структуры ниже. Я хочу создать ряды начальной и конечной позиций и хотел сохранить его как структуру. в зависимости от количества случаев, когда я хочу выполнить функцию.

Пример

StartPosition Endposition 
1                5
6                9
10               14
15               18

Теперь я хочу сохранить такие значения, как ((1,5), (6,9), (10,14), (15,18)) Теперь я хочу выполнить функцию 4 раза, поскольку у меня есть 4 вхождения

for (i=1 , i <4 , i ++)
{
f(xyz , Startposition , endposition)
}

Ответы [ 4 ]

0 голосов
/ 13 ноября 2018

Вы можете использовать встроенный класс java.awt.Point для установки значений X, Y.Хранит эти объекты в java.util.ArrayList или java.util.LinkedList

0 голосов
/ 13 ноября 2018

Я предлагаю вам использовать создать простой класс и список <> этого класса.

public class Range{

private int start;
private int end;

// constructor
// gets and setts
}

И вы бы использовали так:

List<Range> ranges = new ArrayList<>();
ranges.add(new Range(1,5));
ranges.add(new Range(6,9));
...
ranges.add(new Range(x,y));


for(Range range : ranges){
    f(xyz, range.getStart(), range.getEnd());
}
0 голосов
/ 13 ноября 2018

Вариант 1: использовать Array. Это очень просто.

int[] arr = { 1, 5, 6, 9, 10, 14, 15, 18 };

for (int i = 0; i < arr.length; i += 2) {
    int start = arr[i];
    int end = arr[i + 1];
    // payload
}

Вариант 2: использовать TreeSet с пользовательским компаратором. Немного сложнее, но код более понятен.

Set<Pair<Integer, Integer>> ranges = new TreeSet<>(Comparator.comparingInt((ToIntFunction<Pair<Integer, Integer>>)Pair::getKey).thenComparingInt(Pair::getValue));
ranges.add(new Pair<>(1, 5));
ranges.add(new Pair<>(6, 9));
ranges.add(new Pair<>(10, 14));
ranges.add(new Pair<>(15, 18));

for (Pair<Integer, Integer> range : ranges) {
    int start = range.getKey();
    int end = range.getValue();
    // payload
}
0 голосов
/ 13 ноября 2018

Как я понимаю, двухмерный массив подойдет. У вас есть причина, почему вы хотите коллекцию здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...