如何在java中使用方法存储arraylist中的信息

如何在java中使用方法存储arraylist中的信息,java,arrays,arraylist,Java,Arrays,Arraylist,对于我正在做的一个项目,我想使用一个单独的类在arraylist中存储不同人员的信息。在本例中,该方法将包含一个字符串的arraylist来存储我的所有信息。当我尝试这样做时,我意识到每次我运行存储向arraylist添加字符串时,它都会从arraylist中删除所有以前的信息 有没有可能让字符串你好吗?和我很好。你好吗?在类two中添加到数组,而不必在方法重新运行后重置数组 public class one { public static void main (String [] a

对于我正在做的一个项目,我想使用一个单独的类在arraylist中存储不同人员的信息。在本例中,该方法将包含一个字符串的arraylist来存储我的所有信息。当我尝试这样做时,我意识到每次我运行
存储
向arraylist添加字符串时,它都会从arraylist中删除所有以前的信息


有没有可能让字符串
你好吗?
我很好。你好吗?
在类
two
中添加到数组,而不必在方法重新运行后重置数组

public class one
{
    public static void main (String [] args)
    {
        two t = new two();

        t.storage("Hello, How Are You?");
        t.storage("I'm fine. How Are You?");
    }
}
import java.util.ArrayList;
public class two
{
    public static void storage(String toBeAdded)
    {
        ArrayList<String> al = new ArrayList<String>();

        al.add(toBeAdded);
        System.out.println(al);
    }
}
公共一级
{
公共静态void main(字符串[]args)
{
two t=新的two();
t、 存储(“你好,你好吗?”);
t、 储藏室(“我很好,你好吗?”);
}
}
导入java.util.ArrayList;
公共二班
{
公共静态无效存储(带头字符串)
{
ArrayList al=新的ArrayList();
al.添加(带标题);
系统输出打印项次(al);
}
}
给定输出:

[你好,你好吗?]
[我很好,你好吗?]

预期产出:

[你好,你好吗?]
你好,你好吗?,

我很好。你好吗?]

有两种方法可以解决您的问题:

选项(1):您当前的
ArrayList
范围是
存储
方法的本地范围,因为您在每次调用(到
存储()
方法)时都要创建一个全新的
ArrayList
,但您需要的是一个类级别的
静态
ArrayList
对象,如下所示,但由于您正在使用对象调用
storage()
方法,所以这不是更好的选项(在下面解释得很清楚),编译器已经发出警告,您将忽略它

public class two {

    private static ArrayList<String> al = new ArrayList<String>();

    public static void storage(String toBeAdded)
    {
        al.add(toBeAdded);
        System.out.println(al);
    }
}
始终确保使用classname(如Two.storage())调用
静态
变量/方法,而不创建任何对象
,因为它们是类级别的成员,即不适用于单个对象。我强烈建议你更清楚地阅读和理解这个主题



除了上述重要的一点之外,始终确保遵循Java命名标准类名称应以您违反的大写字母开头。

不要将ArrayList声明为局部变量,而是将其用作字段。也使方法非静态

public class two
{

    private ArrayList<String> al = new ArrayList<String>();
    public void storage(String toBeAdded)
    {

        al.add(toBeAdded);
        System.out.println(al);
    }
}
公共二级
{
private ArrayList al=new ArrayList();
公共空存储(带头字符串)
{
al.添加(带标题);
系统输出打印项次(al);
}
}

你的错误

每次调用
storage()

解决方案

因此,创建一个类为
two
的对象,并将其与字符串一起传递给方法
storage()

import java.util.ArrayList;
公共一级
{
公共静态void main(字符串[]args)
{
two t=新的two();
t、 存储(t,“你好,你好吗?”);
t、 存储(t,“我很好,你好吗?”);
}
}
二班
{
ArrayList al=新的ArrayList();
公共静态无效存储(两个对象,带字符串)
{
object.al.add(带标题);
System.out.println(object.al);
}
}

在您的类中
two
方法
存储中的问题
每次调用存储来保存新字符串时,您的逻辑都不正确。您创建了新的arraylist
al
,这将删除旧arraylist中以前的所有信息

要解决此问题,请在第二类中定义
static
arraylist并通过方法存储向其添加信息:

public class two
{
  public static ArrayList<String> al = new ArrayList<String>();

    public void storage(String toBeAdded)
    {
        al.add(toBeAdded);
        System.out.println(al);
    }
}
在您的示例中:

two.storage("Hello, How Are You?");
two.storage("I'm fine. How Are You?");

或者更好的方法是,从代码中删除所有出现的
static
。您需要在方法之外初始化数组列表,但如果只需要静态方法,为什么还要初始化对象提示:阅读java命名约定。班级都是大写的。除此之外:这是最基本的东西;可能在这方面的任何一本书中都有解释。
public class two
{
  public static ArrayList<String> al = new ArrayList<String>();

    public void storage(String toBeAdded)
    {
        al.add(toBeAdded);
        System.out.println(al);
    }
}
ClassName.MethodName()
two.storage("Hello, How Are You?");
two.storage("I'm fine. How Are You?");