【问题标题】:Determine a range (interval) of integer values in an arrayList确定 arrayList 中整数值的范围(间隔)
【发布时间】:2012-04-24 09:54:32
【问题描述】:

我想开发一个函数,它通过arrayList 中的一组整数作为过滤器。基本上我将不得不检索 arrayList 中的最大值和最小值。

示例:min= 1970 AND max=2012(谈论年份,但它们被视为简单整数)

我必须确定一个五年的范围,这样输出就会是

“从 1970 年到 1975 年”点击我会得到列表“1970”、“1971”、“1972”、“1973”、“1974”、“1975” “从 1970 年到 1975 年”...... …… “从 2010 年到 2012 年” onclick 我会得到列表“2010”、“2011”、“2012”

我以前使用模式/匹配器来按字母顺序创建间隔,我会在正确的字母范围内(例如从 A 到 B)对字符串进行分类,但这是不同的,因为我必须定义一个 5 的范围,并且创建子数组。

请帮忙。

谢谢

【问题讨论】:

  • “onclic”是什么意思?
  • 'onclic' 你指的是某个事件吗?还请详细说明。代码 sn-ps,如果您尝试过,会有所帮助。

标签: java range intervals


【解决方案1】:

如果列表已排序,那么您只需一个简单的函数即可获取较低值的索引、较高值的索引 - 然后使用这些索引返回一个子列表。

这是一个示例程序:

public class Main {

    public static void main(String[] args) {

        List<Integer> myList = new ArrayList<Integer>();

        for (int i = 1970; i < 2013; i++) {
            myList.add(i);
        }

        List<Integer> subList = getRange(myList, 1988, 1994);

        for (Integer i : subList) {
            System.out.println(i);
        }

    }

    public static List<Integer> getRange(List<Integer> fromList, int lowVal, int highVal)
    {
        int lowValIndex = fromList.indexOf(lowVal);
        int highValIndex = fromList.indexOf(highVal);

        return fromList.subList(lowValIndex, highValIndex + 1); 
    }

}

这将从列表中返回 1988 -> 1994。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多