Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ArrayList中查找数字_Java_Arraylist_Nullpointerexception - Fatal编程技术网

Java 在ArrayList中查找数字

Java 在ArrayList中查找数字,java,arraylist,nullpointerexception,Java,Arraylist,Nullpointerexception,有一个ArrayList“allVariables”包含整数数组。我需要找出这个数组是否包含数字1。如果是,答案应该是假的,否则是真的 我写了一些代码,但结果是java.lang.NullPointerException: private boolean notIncluded(int ind, ArrayList<Color> c) { ArrayList<Integer[]> allVariables = new ArrayList<Integer[]&

有一个
ArrayList
“allVariables”包含整数数组。我需要找出这个数组是否包含数字1。如果是,答案应该是假的,否则是真的

我写了一些代码,但结果是
java.lang.NullPointerException

private boolean notIncluded(int ind, ArrayList<Color> c) {
    ArrayList<Integer[]> allVariables = new ArrayList<Integer[]>();
        // Filling the ArryList

    for (int k = 0; k < c.size(); k++) {
        allVariables.add(c.get(k).getColor()); // returns Integer[]
    }

    if (Arrays.asList(allVariables).contains(1)) {
        return false;
    }

    return true;
}
private boolean不包括在内(int ind,ArrayList c){
ArrayList allVariables=新的ArrayList();
//填充ArryList
对于(int k=0;k
对于安全壳检查,不要使用
列表
数据结构。这就是为什么我们有
Set
(或者更具体地说,在您的例子中是
HashSet


如果你能找到一种将
ind
映射到
Color
实例的方法,你可以得到非常快速的“包含”检查。

对于包含检查,不要使用
列表
数据结构。这就是为什么我们有
Set
(或者更具体地说,在您的例子中是
HashSet


如果您能找到将
ind
映射到
Color
实例的方法,您可以得到非常快速的“包含”检查。

尝试对
c
c.get(k)
执行空检查

尝试对
c
c.get(k)
执行空检查

数组。asList(allVariables)
:allVariables不是数组,而是数组列表

数组。asList(allVariables)
:allVariables不是数组,而是数组列表

您需要检查代码中的空值。下面的代码尝试实现您需要的内容,并在过程中检查空值:

public function allVariablesContains(List<Integer[]> allVariables, int intToSearchFor)
{
    if (allVariables == null)
        return false;
    for (int i = 0; i < allVariables.Length; i++)
    {
        if (allVariables[i] == null)
            continue;
        if (Arrays.asList(allVariables).contains(intToSearchFor))
            return true;
    }
    return false;
}
公共函数allVariablesContains(列出所有变量,int intToSearchFor)
{
if(allVariables==null)
返回false;
for(int i=0;i
您需要检查代码中是否存在空值。下面的代码尝试实现您需要的内容,并在过程中检查空值:

public function allVariablesContains(List<Integer[]> allVariables, int intToSearchFor)
{
    if (allVariables == null)
        return false;
    for (int i = 0; i < allVariables.Length; i++)
    {
        if (allVariables[i] == null)
            continue;
        if (Arrays.asList(allVariables).contains(intToSearchFor))
            return true;
    }
    return false;
}
公共函数allVariablesContains(列出所有变量,int intToSearchFor)
{
if(allVariables==null)
返回false;
for(int i=0;i
请向我们展示您的stacktrace?对
有异议。包含
?所有变量都已经是一个列表,为什么您需要再次执行array.asList(..)操作?您确定参数“c”不为空吗?请向我们显示您的stacktrace?对
。contains
?allVariables已经是一个列表,为什么您需要再次执行Arrays.asList(..)操作?您确定参数“c”不为空吗?如果列表中不再包含该值,则此建议将不适用于该值,并且该列表将更为合适。@edalorzo:作为一般经验法则,在搜索内容时,
List
几乎总是一个糟糕的解决方案,因为它忽略了可用于“调优”搜索的对象的内容。在这种情况下,更好的做法是重新审视类设计,使其“搜索”友好。例如,我们可以使用
Color
的整数成分来计算
hashCode
,这反过来又可以用来快速定位可能的
Color
实例。在那之后,退回到一个昂贵的
equals()
检查就不会那么糟糕了。说到搜索,说列表是一个糟糕的解决方案实际上是一个大胆的肯定。无论如何,我的论点是,如果列表中有重复的元素,那么集合就不起作用。@edalorzo:这不是一个大胆的集合,它是一个经过验证的集合,也是一个有复杂性理论基础支持的集合。将数以百万计的元素塞进列表,看着你的程序在每次遍历整个列表时窒息而死,只是为了一个简单的“遏制”检查。不管怎么说,我的帖子是为了给我认为我已经做过的OP提供思想食粮。我的情况就到此为止。如果列表中不再包含该值,则此建议在列表中不起作用,列表将更合适。@edalorzo:作为一般经验法则,当涉及到搜索内容时,
List
几乎总是一个糟糕的解决方案,因为它忽略了可用于“调优”搜索的对象的内容。在这种情况下,更好的做法是重新审视类设计,使其“搜索”友好。例如,我们可以使用
Color
的整数成分来计算
hashCode
,这反过来又可以用来快速定位可能的
Color
实例。在那之后,退回到一个昂贵的
equals()
检查就不会那么糟糕了。说到搜索,说列表是一个糟糕的解决方案实际上是一个大胆的肯定。无论如何,我的论点是,如果列表中有重复的元素,那么集合就不起作用。@edalorzo:这不是一个大胆的集合,它是一个经过验证的集合,也是一个有复杂性理论基础支持的集合。将数以百万计的元素塞进列表,看着你的程序在每次遍历整个列表时窒息而死,只是为了一个简单的“遏制”检查。不管怎么说,我的帖子是为了给我认为我已经做过的OP提供思想食粮。我的案子到此为止。