我有一对数值形式的数据(例如(0,2),(2,6),(6,0))。我想对每对进行一些比较(例如,如果我的值为3,则它在给定的值对之间)。存储这些值并能够执行此类比较的最佳方法是什么?
谢谢
答案 0 :(得分:2)
将值存储为元组,双元素数组或IntRange
(docs)的列表/集合,或者......
比较本身提供了一些选择;您可以手动比较,如果在范围内/超出范围,则返回true / false。或者您可以实现Comparable
并与单个值进行比较,分别为低于最低值,范围内,高于最高值的值返回-1,0,1,使用元组/范围类{{ 1}} - 类似方法,或者......
这取决于您实际尝试做什么,但粗略地说,使用contains
:
IntRange
您还需要决定如何处理“反向范围”,例如List<IntRange> ranges = new ArrayList<IntRange>() {{
add(new IntRange(0, 2));
add(new IntRange(2, 6));
add(new IntRange(6, 0));
}};
public boolean inRange(int n, List<IntRange> ranges) {
for (IntRange range : ranges) {
if (range.containsInteger(n)) {
return true;
}
}
return false;
}
。
答案 1 :(得分:2)
创建一个专门用于此目的的课程。
public class Pair
{
final int first;
final int second;
public Pair ( int first, int second )
{
// perform some validation that first is less than second
...
}
public boolean isValueInBetween( int value )
{
retrn value >= first && value <= second;
}
}
以下是用法:
Pair one( 0, 2);
Pair two( 2, 6);
Pair three( 0, 6);
System.out.println( one.isValueInBetween( 3 ) );
System.out.println( two.isValueInBetween( 3 ) );
System.out.println( three.isValueInBetween( 3 ) );