0

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

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

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

有什么解决办法吗?

4

3 回答 3

2
class MyContainer {
  String someString;
  int someInt;
}

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

那样的东西!?

我不确切知道,“在我的情况下为此创建对象不是一个好主意”是什么意思。作为替代方案,您可以创建一个List<Object>并放入您拥有的任何内容,或者List<List<Object>>如果您想要一个包含多个分组对象的列表,甚至可以放入一个。

于 2013-07-06T22:59:47.457 回答
1

仅使用 Map 并使用属性名称作为键(例如 Weight )怎么样?您可以使用所需的任何属性组合,并且将此类集合传递给查询会很方便

如果您需要更多列名类型安全,请考虑枚举映射

于 2013-07-07T00:48:03.253 回答
1

最好的方法是制作一个包含所有可能元素的对象。

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

或者有一个基类,然后有另一个类,用附加元素扩展它

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

然后,如果您没有将元素设置为 null ...您始终可以通过包含返回查询的方法从对象本身构建查询,只需检查它是否为 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
 }
于 2013-07-07T00:34:31.780 回答