如何从序列化类中的集合中获取项目?

时间:2014-10-20 17:26:02

标签: java arrays sqlite serialization

我有类似的东西(非常简化的版本):

 public class TransferData implements Serializable{

  private Collection[] collections;
  private String ID;

  public TransferData( Collection[] collections){
   this.ID = ID;
   this.collections = collections;

  }

  public String getID(){
        return ID;
  }

  public Collection[] getCollections(){
        return collections;
  }

}

这就是我通常抓住一个项目的方式:

//Save object in db
ContentValues values = new ContentValues();
values.put("id", td.getID());

但是,我无法理解如何从序列化类中的集合/数组中获取项目?

这没有意义:

ContentValues values = new ContentValues();
values.put("collectionitem1", td.getCollections()); ??? //need to index the array, how? 

我试过这样的事情:

for (int i=0; i <= td.getCollections().length; i++) {
                                System.out.println(i);
                            }

但奇怪的是只给了我3个索引而不是我的数组中的4个索引,但它对我没有帮助。此外,我的数组包含字符串和整数,因此可能很难使用foreach样式循环进行索引。

2 个答案:

答案 0 :(得分:0)

想出来!我知道这是关于设置错误地通过数组的事情。这是解决方案:

//Create a new map of values, where column names are the keys
                            ContentValues values = new ContentValues();

                            for (Collection collection : td.getCollections()) {

                                values.put("reminders", collection.getNumberOfReminders());
                        }

答案 1 :(得分:-1)

我看到你正在使用SQLite。在我看来,你这一切都是错的。您似乎需要使用实体类:

/**
 *
 * @author kkennedy
 */
@Entity(name = "TransferData")
@Table(name = "TransferData")
public class TransferData implements Serializable {

    @Id
    @Basic(optional = false)
    @Column(name = "ID", nullable = false, length = 8)
    private String ID;

    @Basic(optional = false)
    @Column(name = "data", nullable = false, length = 8)
    private String data;

    /**
     * Default Constructor
     */
    public TransferData() {
    }

    /**
     * Getter
     *
     * @return
     */
    public String getID() {
        return ID;
    }

    /**
     * Setter
     *
     * @param ID
     */
    public void setID(String ID) {
        this.ID = ID;
    }

    /**
     * Getter
     *
     * @return
     */
    public String getData() {
        return data;
    }

    /**
     * Setter
     *
     * @param data
     */
    public void setData(String data) {
        this.data = data;
    }

}

我确信这不是你实际使用的,但是通过使用实体类,JDBC驱动程序可以完成将数据实际放入和放出数据库的所有工作。您只需将其输入到类中,然后根据需要持久化并查询数据库。

不确定这是否是最佳起点,但请点击此处了解详情:http://docs.oracle.com/javaee/5/tutorial/doc/bnbqw.html