从数组中删除某些元素?

时间:2012-05-15 13:28:30

标签: java arrays

我需要我的代码向后看一个数组,比如:[20, 15, 9, 2, 11, 9, 11, 10, 3]

它需要找到满足的元素在由元素+ - 2创建的区间中。

实施例。 3创建间隔[1-5],因为下一个元素是10,它高于间隔。我们移动到元素10,它创建区间[8-12]我们看到11,9,11,9和10本身在该区间中,将它们添加到新数组。 (高于间隔的元素应该使代码中断,较小的元素是可以的)。

输入ex:[20, 15, 9, 2, 11, 9, 11, 10, 3] 输出ex:[9, 2, 11, 9, 11, 10, 3] or [9, 11, 9, 11, 10]

输入ex:[20, 15, 9, 2, 11, 20, 11, 10, 3] 输出例如:[11, 10, 3][11, 10]

我已经尝试了很多方法,因为我很新,我对于能够在阵列中做什么不是很有经验。我很少运气,环顾互联网。

到目前为止,我想出的是:

List<Integer> thetops = new ArrayList<Integer>();
double lowerFactor = 0.8;
double upperFactor = 1.2;


for(int k = tops.size()-1; k > 0; k--){
    double lowerLimit = tops.get(k) * lowerFactor;
    double upperLimit = tops.get(k) * upperFactor;

    if (tops.get(k-1) > upperLimit){
        k=k-1;

        }
    if (tops.get(k) >= lowerLimit && tops.get(k) <= upperLimit){
        thetops.add(tops.get(k));
    }
}

我想要做的是选择最后一个元素,如果下一个元素高于移动到该元素的间隔,则从该值创建一个间隔。但如果下一个元素在该间隔中,则将其添加到新数组中。

1 个答案:

答案 0 :(得分:0)

如果我理解正确您要删除高于特定阈值的所有值并删除重复项,请更正吗?

如果是这种情况,那么尝试使用SortedSet(或SortedMap),将所有值添加到集合中,这将删除重复项,然后获取该排序集的头集,即获取小于阈值的所有值(如果还应包含阈值,则将阈值+ 1传递给headSet(...)方法)。

如果需要像在数组中一样保留排序,则可能需要使用映射并将值用作键,将数组索引用作值。