哪种类型的集合结构最适合以下结构? 我想创建一行开始和结束位置,并希望将其存储为结构。基于我想执行功能的次数。
示例
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)
}
答案 0 :(得分:1)
我建议您使用创建一个简单的类和该类的List <>。
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());
}
答案 1 :(得分:0)
据我了解,二维数组可以做到。您有什么理由要在这里收藏吗?
答案 2 :(得分:-1)
选项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
}
答案 3 :(得分:-1)
您可以使用内置的java.awt.Point
类来设置X,Y值。将这些对象存储在java.util.ArrayList
或java.util.LinkedList