Java 从arraylist中拾取元素
给一个数组列表说[3,10,9,11,10,2,9],我需要写一些代码来挑选序列[10,9,11,10] 这样做的方法是从一个元素创建一个间隔,然后检查下一个元素是否在该间隔内 外汇: 从元素3我们得到了区间,3*0,80和3*1,20=[2.4-3.6]。现在检查下一个元素10是否在该时间间隔内-不是。移动到下一个元素10 从10我们得到间隔[8-12]。我们看到9,11和10在这个区间,2不是那么停 我所拥有的:Java 从arraylist中拾取元素,java,arraylist,Java,Arraylist,给一个数组列表说[3,10,9,11,10,2,9],我需要写一些代码来挑选序列[10,9,11,10] 这样做的方法是从一个元素创建一个间隔,然后检查下一个元素是否在该间隔内 外汇: 从元素3我们得到了区间,3*0,80和3*1,20=[2.4-3.6]。现在检查下一个元素10是否在该时间间隔内-不是。移动到下一个元素10 从10我们得到间隔[8-12]。我们看到9,11和10在这个区间,2不是那么停 我所拥有的: import java.util.ArrayList; import java
import java.util.ArrayList;
import java.util.List;
public class HelloWorld {
public static void main (String[] args){
List<Integer> tops = new ArrayList<Integer>();
tops.add(3);
tops.add(10);
tops.add(9);
tops.add(11);
tops.add(10);
tops.add(2);
tops.add(9);
List<Integer> newtops = new ArrayList<Integer>();
for (int i = 1; i < tops.size()-1; i++){
double minValue = tops.get(i)*0.80;
double maxValue = tops.get(i)*1.20;
for (int k = i+1; k < tops.size()-1; k++){
if (tops.get(i) > minValue && tops.get(i) < maxValue){
newtops.add(tops.get(i));
}
else{
break;
}
}
}System.out.println(newtops);
}
}
输出:
[10,10,10,9,9,11,11,10]
预期产出:
[10,9,11,10]我认为这会奏效。未经测试的
List<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(10);
list.add(9);
list.add(11);
list.add(10);
list.add(2);
list.add(9);
List<Integer> result = new ArrayList<Integer>();
double lowerFactor = 0.8d;
double upperFactor = 1.2d;
double lowerLimit = list.get(0) * lowerFactor;
double upperLimit = list.get(0) * upperFactor;
int index = 1;
do
{
if (lowerLimit <= list.get(index) && list.get(index) <= upperLimit)
{
if (result.isEmpty())
{
result.add(list.get(index - 1));
}
result.add(list.get(index));
} else if (result.size() > 0)
{
break;
} else
{
lowerLimit = lowerFactor * list.get(index);
upperLimit = upperFactor * list.get(index);
}
index++;
} while (index < list.size());
你做了什么?张贴您尝试的代码,然后如果您有问题,我们将很乐意帮助您!你需要表现出一些主动性。。。分享你尝试过的代码,我们会帮助你。这并不是说我没有尝试过,我只是还没有想出一些值得展示的东西,但我会尝试给你一些东西:嗯,是的,它似乎起作用了,只是不需要前10个。嗯,现在让我们假设你有arraylist[20,9,2,10,11,9,10,3]与+20之前相反的一个,我仍然想要相同的输出?