【问题标题】:How to add an object to an ArrayList in Java如何在 Java 中将对象添加到 ArrayList
【发布时间】:2013-11-06 04:09:25
【问题描述】:

我想向ArrayList 添加一个对象,但每次我向ArrayList 添加一个具有3 个属性的新对象时:objt(name, address, contact),都会出错。

import java.util.ArrayList;
import java.util.Scanner;
public class mainClass {
    public static void main(String args[]){

        Scanner input = new Scanner(System.in);
        System.out.println("Plz enter Name : ");
        String name = input.nextLine();
        System.out.println("Plz enter Address : ");
        String address = input.nextLine();
        System.out.println("Plz enter ContactNo : ");
        String contact = input.nextLine();


        ArrayList<Data> Contacts = new ArrayList<Data>();
        Data objt = new Data();
        Contacts.add(objt.Data(name, address, contact));
    }
}

这里,Data 是我尝试创建对象并将其传递给ArrayList 的类。

public class Data {

        private String name = "";
        private String address = "";
        private String cell = "";


        public void Data(String n, String a, String c){

            name = n;
            address = a;
            cell = c;
        }
        public void printData(){

            System.out.println("Name\tAddress\tContactNo");
            System.out.println(name + "\t" + address + "\t" + cell);
        }
}

【问题讨论】:

  • 你遇到了什么错误?

标签: java arraylist add


【解决方案1】:

创建对象时需要使用new操作符

Contacts.add(new Data(name, address, contact)); // Creating a new object and adding it to list - single step

否则

Data objt = new Data(name, address, contact); // Creating a new object
Contacts.add(objt); // Adding it to the list

并且您的构造函数不应包含void。否则它会成为你类中的一个方法。

public Data(String n, String a, String c) { // Constructor has the same name as the class and no return type as such

【讨论】:

  • OP 也应该在他的类中编写一个构造函数。
【解决方案2】:

试试这个:

Data objt = new Data(name, address, contact);
Contacts.add(objt);

【讨论】:

    【解决方案3】:
    Contacts.add(objt.Data(name, address, contact));
    

    这不是调用构造函数的完美方式。构造函数在对象创建时自动调用。如果没有构造函数 java 类创建自己的构造函数。

    正确的做法是:

    // object creation. 
    Data object1 = new Data(name, address, contact);      
    
    // adding Data object to ArrayList object Contacts.
    Contacts.add(object1);                              
    

    【讨论】:

      【解决方案4】:

      你必须在这里使用 new 操作符来实例化。例如:

      Contacts.add(new Data(name, address, contact));
      

      【讨论】:

        【解决方案5】:

        向List类传递数据的最佳方式,

        private final List<electronic> Electronic = new ArrayList<electronic>();
        
        public List<electronic> getElectronic() {
            return Electronic;
        }
        
        // creating list to store and display the Electronic items
        public void StoreAndDisplayElectronic() {
            String[] EelctronicName = { "Laptop", "Television", "ElectricBike" };
            String[] ElectronicID = { "091", "202", "151" };
            Double[] EPrice = { 340.00, 280.00, 600.00 };
            int[] EAmt = { 5, 12, 4 };
        
            for (int i = 0; i < ElectronicID.length; i++) {
                this.Electronic.add(new electronic(EelctronicName[i], ElectronicID[i], EPrice[i], EAmt[i]));
            }
        }
        

        【讨论】:

          【解决方案6】:

          调用“Data()”方法时不会返回数据对象。

          将 'Data()' 方法更改为:

              public Data Data(String n, String a, String c){
                  name = n;
                  address = a;
                  cell = c;
                  return this;
              }
          

          【讨论】:

            【解决方案7】:

            将日期更改为括号之间的对象

            【讨论】:

            • 什么日期?这对我来说似乎不是一个解决方案。
            • 我认为他们的意思是Data,但看起来这个用户并没有回来。
            猜你喜欢
            • 2023-04-06
            • 2013-10-29
            • 1970-01-01
            • 1970-01-01
            • 2021-05-26
            • 2019-02-18
            • 1970-01-01
            相关资源
            最近更新 更多