如何在java中使用方法存储arraylist中的信息
对于我正在做的一个项目,我想使用一个单独的类在arraylist中存储不同人员的信息。在本例中,该方法将包含一个字符串的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中删除所有以前的信息
有没有可能让字符串
你好吗?
和我很好。你好吗?
在类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
方法存储中的问题
每次调用存储来保存新字符串时,您的逻辑都不正确。您创建了新的arraylistal
,这将删除旧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?");