java - 将字符串添加到数组列表<String>

标签 java arraylist

我在将字符串添加到 ArrayList 时遇到问题。我的目标是使用 for 循环创建数组列表。但是每次循环时,它似乎总是删除以前的数据,然后用新数据替换它,因此 ArrayList 的值只有 1 而不是 4。这是完整的代码

public class SerialDemo {

    private static File f;
    private static Save obj1;
    private static Save obj;

    private static int number = 4;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            //getData("newFile.txt");
            for(int i = 0; i < number;i++) {
                obj = new Save();
                obj.arrayLocationX.add(String.valueOf(10 * i));
                obj.arrayLocationY.add(String.valueOf(20 * i));
                obj.arrayTitle.add(String.valueOf(30 * i));
                obj.arrayDescription.add(String.valueOf(40 * i));
                obj.arrayNumber.add(""+i);
            }

            for(String x:obj.arrayLocationX) {
                System.out.println(obj.arrayLocationX);
            }

            //setData("newFile.txt");
            /*getData("newFile.txt");

            for(int i = 0; i < obj.arrayLocationX.size(); i++) {
                System.out.println("Value of Desc"+obj1.arrayNumber);   
                System.out.println("Value of locX"+obj1.arrayLocationX.get(i)); 
                System.out.println("Value of locY"+obj1.arrayLocationY.get(i)); 
                System.out.println("Value of Tit"+obj1.arrayTitle.get(i));  
                System.out.println("Value of Desc"+obj1.arrayDescription.get(i));   
                System.out.println("  ");
                System.out.println(obj.arrayDescription.size());
            }*/
        }catch(Exception e) {

        }

    }

    private static void setData(String fileName) {
        // set the object or data
        try {
            f = new File(fileName);
            FileOutputStream fps;
            fps = new FileOutputStream(f);
            ObjectOutputStream dos = new ObjectOutputStream(fps);
            dos.writeObject(obj);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch(IOException e) {

        }
    }
    private static void getData(String fileName) {
        // get the object or data
        try {
            f = new File(fileName);
            FileInputStream fin = new FileInputStream(f);
            ObjectInputStream Oin = new ObjectInputStream(fin);
            obj1 = (Save) Oin.readObject();
        }catch(FileNotFoundException e) {

        }catch(IOException e) {

        }catch(ClassNotFoundException e) {

        }
    }

}

class Save implements Serializable {
    ArrayList<String> arrayNumber = new ArrayList<String>();
    ArrayList<String> arrayLocationX = new ArrayList<String>();
    ArrayList<String> arrayLocationY = new ArrayList<String>();
    ArrayList<String> arrayTitle = new ArrayList<String>();
    ArrayList<String> arrayDescription = new ArrayList<String>();
}

最佳答案

每次迭代都会创建一个新的obj,因此您添加的字符串会丢失。尝试将 obj = new Save(); 移到循环之前。

关于java - 将字符串添加到数组列表<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47949326/

相关文章:

c# - 如何从 arraylist 中获取不同/唯一的值?

java - ArrayList 和文件传输的问题

java - 如何从列表中删除字符串并存储它?

java - "The inferred type _____ is not a valid substitute for the bounded parameter"

java - URL 参数和 post body 在同一个 Apache httpclient 请求中?

java - ArrayList 中的重复元素

java - KeyListener 不起作用

Java小程序获取文档cookie?

java - 如何在任务正在进行时在 Java Swing 中获取自定义的 gif

java - 从 OutputStream 到文件流