Arraylist中的一种以上类型

时间:2018-11-21 13:40:17

标签: java arrays

我一直想知道如何在Java中创建可以容纳不同类型(整数+字符串)的arraylist 并且一些字符串变量将来自不同的类 我的变量是

day: string, time: int, section: Sections(string), doctor: Doctors(string), patient: Patients(string), AppointmentNo: int

4 个答案:

答案 0 :(得分:0)

首先,您必须创建自己的类以容纳诸如Stringint之类的数据类型。您可以这样做:

public class MyCustomItems{
    private String doctors;
    private String patient;
    private int appointmentNo;

    public MyCustomItems(String doctors, String patient, int num) {
        this.doctors = doctors;
        this.patient= patient;
        this.appointmentNo = num
    } 

    public String getDoctors() {
        return doctors;
    }

    public void setDoctors(String d) {
        this.doctors= d;
    }

    public void setPatient(String p) {
        this.patient= p;
    }

    public void setNum(int n) {
        this.num= n;
    }

    public String getPatient() {
        return patient;
    }

    public String getAppointment() {
        return appointmentNo;
    }
}

然后,您将必须创建一个ArrayList ,并且 ArrayList类型将是您刚创建的类<​​/ strong>。 它应该看起来像这样:

ArrayList<MyCustomItem> arrayList = new ArrayList<>();
arrayList.add(new MyCustomItem("Doctor 1", "Patient 1", 1));

arrayList添加新值时,必须使用new MyCustomItem(string, string, int)来传递这些值,因为在MyCustomItem类中,构造函数需要两个String和一个诠释现在,arrayList中的每个位置将保存一个MyCustomItem类的对象,这意味着每个位置将不仅包含一个int或一个String,而且将包含2个String和一个int。

这就是您要执行的操作。我希望这能回答您的问题。

答案 1 :(得分:0)

使用您在问题中指定的字段创建课程:

public class Appointment {
    String day;
    int time;
    String section;
    String doctor;
    String patient;
    int appointmentNo;

    public Appointment() {
    }
}

然后创建带有约会对象的数组列表:

public static void main(String[] args) {
    List<Appointment> appointments = new ArrayList<>();
    appointments.add(new Appointment());
}

答案 2 :(得分:0)

这不是正确的方法,但是您可以执行以下操作

    ArrayList<Object> objects = new ArrayList<>();
    objects.add(1);
    objects.add("asd");

更好的方法是使用具有所需Strings和int值的属性创建其他类。然后使用该类的类型创建一个数组,然后将这些对象添加到该数组中。

答案 3 :(得分:0)

您误解了数组的用途。 数组是一种数据结构,其中包含特定数据类型的元素的固定大小*集合。link

比方说,您已经完成了在数组中存储stringintobject的工作。

const foo = [ 
  "Jan 1st, 1970", 
  1542824996, 
  { name: "Foo" },
]

到目前为止,可能还不错,因为您可以说出这些数据之间的关系,但是如果添加更多的数据呢?

const bar = [ 
  "Jan 1st, 1970", 
  1542824996, 
  { name: "Foo" }, 
  "Jan 2nd, 1970", 
  1542824000, 
  { ... } 
]

或更糟糕的是,如果您有这个:

const bar = [ 
  "Jan 1st, 1970", 
  "Jan 2nd, 1970", 
  1542824996, 
  1542824000, 
  { name: "Foo" }, 
  { ... } 
]

只有2个条目,您的数据结构失去了其用途(数据的组织)。这就是为什么我们使用objects并将相似的对象存储在数组中的原因。像这样:

// FooBar Class Declaration
class FooBar {
  public date;
  public time;
  public options;

  constructor(date: string, time: int, options: object) {
    this.date = date;
    this.time = time;
    this.options = options;
  }  
}

// Constructing the `FooBar` object
const fB1 = new FooBar("Jan 1st, 1970", 1542824996, { name: "Foo" });
const fB2 = new FooBar("Jan 2nd, 1970", 1542824000, { ... });

// Storing the objects in an array
const fooBarContainer = [ fB1, fB2 ];

现在很清楚对象内部的关系是什么,您可以获得排序,过滤,映射等所有数组的好处。

答案::您应该首先以逻辑上相关的结构组织数据,然后将其存储在数组中。