Java:ArrayList:确定条目是否存在条目

时间:2009-12-20 15:45:18

标签: java arrays

如何通过索引检查ArrayList中是否存在值?

Java提供contains(Object)方法,但不包含(Integer index)方法

谢谢

4 个答案:

答案 0 :(得分:5)

完全不确定你的问题是什么。你谈到看一个条目是否“存在”,然后你谈论缺乏remove(Object index)方法的Java。

关于删除:由List实施的ArrayList界面上有remove(int)方法。 (Java Listint编制索引,而不是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);