想要存储一对int值并进行比较

时间:2012-01-28 19:21:53

标签: java

我有一对数值形式的数据(例如(0,2),(2,6),(6,0))。我想对每对进行一些比较(例如,如果我的值为3,则它在给定的值对之间)。存储这些值并能够执行此类比较的最佳方法是什么?

谢谢

2 个答案:

答案 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 ) );