对于我正在做的一个项目,我想使用一个单独的类来将各种人的信息存储在一个数组列表中。在这种情况下,该方法将包含一个字符串数组列表来存储我的所有信息。当我尝试这样做时,我意识到每次我运行 storage
将字符串添加到 arraylist 时,它都会从 arraylist 中删除所有以前的信息。
是否有可能使字符串 Hello, How Are You?
和 I'm fine.你好吗?
添加到类 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);
}
}
给定输出:
[你好,你好吗?]
[我很好。你好吗?]
预期输出:
[你好,你好吗?]
[你好吗?,
我很好。你好吗?]
最佳答案
有两种选择可以解决您的问题:
选项(1):您当前的 ArrayList
范围是 storage
的本地范围方法 因为您正在创建一个品牌new
ArrayList
在每次调用时(对 storage()
方法),但您需要的是一个 static
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);
}
}
选项(2)(更喜欢这个):删除static
范围和声明 ArrayList<String>
作为实例变量,如下所示(更喜欢此选项),因为您正在调用 static
使用不需要的对象引用的方法会造成混淆。
public class two {
private ArrayList<String> al = new ArrayList<String>();
public void storage(String toBeAdded)
{
al.add(toBeAdded);
System.out.println(al);
}
}
始终确保 static
变量/方法使用类名(如 Two.storage())调用而不创建任何对象,因为它们是类级别的成员,即,它们并不意味着用于单个对象。我强烈建议你阅读 this并更清楚地理解这个主题。
除了上述要点外,请始终确保您遵循 Java 命名标准,例如类名应以大写字母开头,而您违反了这一点。
关于java - 如何使用java中的方法来存储arraylist中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43303831/