任何收集对象,以保存超过2个元素的组合列表?

时间:2013-07-06 22:53:13

标签: java arrays list collections elements

是否有集合对象或方法来保存元素组合?

例如,我需要创建一个包含元素名称,年龄,身高和体重组合的列表。

在我的情况下,为此创建一个对象并不是一个好主意。因为字段数不断变化。 我需要创建此列表以传递给查询。

任何解决方案?

3 个答案:

答案 0 :(得分:2)

class MyContainer {
  String someString;
  int someInt;
}

List <MyContainer> myList = new List<>();

有类似的东西!?

我不确切地知道,“在我的情况下为此创建一个对象并不是一个好主意”。您可以替代创建List<Object>并输入您拥有的任何内容,如果您想拥有多个分组对象的列表,则可以输入List<List<Object>>

答案 1 :(得分:1)

最好的方法是创建一个包含所有可能元素的Object。

class myObject {
     String name;
     Integer age;
     Float weight; 
     // Etc
}

或者有一个基类,然后有另一个类,使用其他元素扩展它

class myExtendedObject extends myObject{
     String streetAddress;
     String city;
     // etc;
}

然后,如果你没有将一个元素设置为null ...你总是可以通过包含一个返回查询的方法从对象本身构建你的查询,juct检查它是否为null并且不包括在你的查询(假设你的意思是一个sql样式的查询)

public String buildQuery{
     String query = "Select * from blahtable Where ";
     query += (name != null)?" name = " + name : "";

     // etc, or what ever your query needs to be
     return query
}

另外,您可以使用一个返回元素地图的方法,然后根据键知道每个元素的类型

 public Map<String, Object> getElements{
      Map<String, Object> myMap = new HashMap<String, Object>();
      if(name != null)
         myMap.put("Name", name);

      // etc
      return myMap
 }

答案 2 :(得分:1)

如何只使用Map并使用属性名称作为键(例如Weight)? 您可以使用所需的任何属性组合,将此类集合传递给查询

会很方便

如果您需要更多列名称类型安全

,请考虑Enum map