如何通过索引检查ArrayList中是否存在值?
Java提供contains(Object)方法,但不包含(Integer index)方法
谢谢
答案 0 :(得分:5)
完全不确定你的问题是什么。你谈到看一个条目是否“存在”,然后你谈论缺乏remove(Object index)
方法的Java。
关于删除:由List
实施的ArrayList
界面上有remove(int)方法。 (Java List
由int
编制索引,而不是Object
编制索引。)
关于给定索引处的条目是否“存在”,如果列表的size()
方法大于索引(并且索引是非负的),则该索引处有一个条目:
if (index >= 0 && index < list.size()) {
// An entry exists; hey, let's remove it
list.remove(index);
}
答案 1 :(得分:3)
如果您有一个稀疏数组(可以包含空值),您可能也想要检查它。
public static boolean isSet(List<?> list, int index) {
return index >=0 && index < list.size() && list.get(index) != null;
}
不确定为什么你希望索引是Integer类型,但如果你这样做,你也应该检查null。允许空值是获得Integer类型的唯一理由。
public static boolean isSet(List<?> list, Integer index) {
return index != null && index >=0 && index < list.size() && list.get(index) != null;
}
答案 2 :(得分:1)
如何通过索引检查ArrayList中是否存在值?
试试这个:
int aIndex = ...;
boolean aIsExistByIndex = (aIndex >= 0) && (aIndex < AL.size())
希望这个帮助:-p
答案 3 :(得分:0)
也许您应该考虑使用HashMap而不是ArrayList。 有一个原因是为ArrayList没有实现该方法(int index)(主要是因为它需要很多内存来为特定索引实现ArrayList):
int i = 3; int j = 4;
HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
hm.put(3, 4);
hm.containsKey(3);