将一个数组列表中的特定值添加到另一个数组列表中

时间:2018-10-26 04:52:52

标签: arrays arraylist nullpointerexception hashset

有!我正在做学校作业,并且是Java初学者。我正在编写一个程序,该程序具有一个名为petshop的ArrayList。宠物店由对象居民组成。

对象居民具有诸如姓名,生日,邮政编码和宠物(居民所拥有的宠物)之类的字段。以下是对象“居民”的示例:   名字扬   生日11/11/1991   邮政编码2222   宠物狗猫猪

我正在写一种方法来找出唱片覆盖了多少种宠物。我在想的是将petshop中的pet记录添加到新的String Array Pet中,并清除重复的值。 这是我的代码:

public void addpets() {
        Set<String>cleanpets = new HashSet<>();


        for(int i=0; i<petshop.size();i++)
        {           
            String[]pet = petshop.get(i).getPetown().split("");

            for(int j=0; j<pet.length; j++)
            {
                pets.add(pet[j]);
            }
        }   

            cleanpets.addAll(pets);
            pets.clear();
            pets.addAll(cleanpets);
        }

Pets是我在同一类中初始化过的新String ArrayList。当我运行整个程序时,控制台始终在“ main”线程java.lang.NullPointerException中显示以下行的异常:pet = petshop.get(i).getPetown()。split(“”);

我不明白哪里出了问题。还是有另一种方法?

我知道现在出了什么问题。因为如果居民只有一只宠物,那么String [] pet = petshop.get(i).getPetown()。split(“”);不会工作。

1 个答案:

答案 0 :(得分:0)

没有看到其他方法,很难看到问题所在,但是我猜是在将其放入数组时,因为这是引发异常的行。

您正在以String[]pets;的形式初始化数组,但是没有使用new关键字来实际制作数组或指定其大小;您所拥有的只是名称pet。当使用非原始类型的变量(如果不知道它是什么)进行查找时,实际上就是在创建引用。但是,您的引用(当前命名为pet)没有投入任何内容,因为您没有将其设置为任何内容。要解决此问题,请说String[] pet = new String[insert_size];,以便pet实际上引用一个可以容纳String变量的数组。