2

我有一个项目,我保存一些来自 Soap 服务不同渠道的数据,例如:

String_Value Long_timestamp Double_value String_value String_value Int_value

我可以有很多行(即 200 行),具有不同的值,就像上面的那个。

我认为我可以使用 an ArrayList,但是 data 可以具有与上述不同的结构,因此 anArrayList可能不是从中检索数据的好解决方案。
例如,在前两个始终固定的值之后,我有 4 个值,但在另一个通道中,我可能有 3 个或 5 个值。我想要检索数据,我必须知道有多少值有一个特定的行,我认为这Arraylist对我没有帮助。

我可以使用什么解决方案?

4

3 回答 3

2

当您需要唯一标识不同长度的输入时,aHashMap通常效果很好。例如,你可以有一个类:

public class Record
{
      private HashMap<String, String> values;

      public Record()
      {
           // create your hashmap.
           values = new HashMap<String, String>();
      }

      public String getData(String key)
      {
           return values.get(key);
      }

      public void addData(String key, String value)
      { 
           values.put(key, value);
      }
}

使用这种类型的结构,您可以根据需要保存任意数量的不同值。我要做的是遍历从传递的每个值Soap并简单地添加到Record,然后保留Record对象列表。

Record rec = new Record();
rec.addData("timestamp", timestamp);
rec.addData("Value", value);
rec.addData("Plans for world domination", dominationPlans);
于 2013-09-03T09:58:26.403 回答
1

您可以构建代表实体的类,然后构建解析器...如果它不是标准格式(例如 JSON、YAML、ecc...),您将无法选择开发自己的解析器。

于 2013-09-03T09:57:04.097 回答
0

创建一个带字段的类。

class ClassName{

int numberOfValues;
String dataString;

...

}

现在创建该类的 ArrayList,ArrayList<ClassName>并为每条记录填充该类对象,其中包含 numberOfValues 和 dataString 并添加到 Arraylist 中。

于 2013-09-03T10:07:29.017 回答