ArrayList的Java错误

时间:2017-04-24 08:59:38

标签: java arraylist

我一直在浏览互联网,但无法找到解决方案。

这是我的代码:

import java.util.ArrayList;

public class Memoire{

int taille;                             //Size of the memory in bits
boolean flag = true;                    //At "0" if the memory is fully utelized. Else at "1"
ArrayList pid = new ArrayList();        //Use to store the pid
ArrayList size = new ArrayList();       //Use to store the amount of memory allocated for each pid

public void memoire()
{

}

public void memoire(int qTaille)
{
    taille = qTaille;
}

public boolean allouer(int qSize, int qPid,boolean force)//The Process ID (pid) bind the allocated memory to his process
{
    int left = verifMemoire(qSize);                 //Get the remaining memory

    if(left < qSize)                                //If the remaning memory is larger than the request
    {
        pid.add(qPid);                              //Store the pid
        size.add(qSize);                            //Store the size
    }
    else
    {
        if(force)                                   //If the user want to force the allocation 
        {
            pid.add(qPid);                          //Store the pid
            size.add(left);                         //Sotre the remaining memory size
        }
        else
        {
            return false;                           //If the user don't want to force, return an error
        }
    }
    return true;                                    //Return the success of the allocation
}

我仍然让Eclipse告诉我,我需要指定并反对我的.add ArrayList(size.add(qSize);)。它真的很必要吗?

这不仅是合规性错误。这是List ist声明的方式

2 个答案:

答案 0 :(得分:1)

指定将存储在ArrayList中的元素类型。在这种情况下,我认为您在size列表中存储整数值,因此只需在尖括号内定义Integer类型,如下所示:

ArrayList<Integer> size = new ArrayList();

如果您使用的是Java 7前版本:

ArrayList<Integer> size = new ArrayList<Integer>();

顺便说一句,我建议你在赋值的左侧使用List接口类型,并在右侧指定List的实现(如ArrayList)。这样您就可以将代码与接口的特定实现分离:

List<Integer> size = new ArrayList();

答案 1 :(得分:1)

您需要指定您的arraylist将包含的对象类型。

List<Type> myArrayList = new ArrayList<>()

或者在旧版本的java上,您需要指定两次

List<Type> myArrayList = new ArrayList<Type>()

请注意,此类型必须是类类型,而不是基本类型。你不能使用int,char,double等(但你可以使用Integer,Character,Double)。此外,正如gundev添加到此答案中,最佳做法是在声明这些类型的变量时使用List接口类型而不是ArrayList类型

这就像你为数组和其他变量指定类型的方式一样,但语法略有不同。如果您有兴趣,可以查看泛型,甚至只查看ArrayList源代码