我在arraylist中添加了少量编号。我想从中找到一定的价值。例如我有4,4,9,9,18。我想找到26的值。如果26>列表中最大的值,它将显示18,如果值是17,它将显示9,如果值是5,它将显示4.还有另一种方法来实现这一点搜索,因为班轮搜索可能会很慢。Java在arraylist中查找值
search value 26
[4,4,9,9,18] display 18
[20,20,29,29,4] display 20
[28,28,28,1,10] display 28
如果您有此列表并搜索26,它会输出第一个元素。因为第一个元素是< =正在搜索的值。
但电流输出是
值值2:9的
public class Arraylist {
public static ArrayList<Integer> aList;
public static void main(String[] args) {
aList = new ArrayList<Integer>();
aList.add(4);
aList.add(4);
aList.add(9);
aList.add(9);
aList.add(18);
int value = 26;
int value2 = 0;
for (int i = 0; i < aList.size(); i++) {
if (aList.get(i) <= value) {
if (i + 1 < aList.size()) {
value2 = aList.get(i);
} else if(i > aList.size()) {
value2 = aList.get(i);
}
}
}
System.out.println("Value of value2 : " + value2);
}
}
我不明白你的逻辑。你正在寻找一个地方应该将一个给定的值插入到一个有序的'ArrayList'中以保持它的排序吗? –
另一种方法是从列表中间开始搜索,并检查变量是否高于或低于数组中的值,如果低于此值,则从这一点向后搜索,如果搜索结果较高,则向前搜索。 –
所以你被要求实现一些听起来几乎像二分搜索的东西... – vanza