访问列表的值

时间:2013-09-05 13:44:53

标签: java list

我在读取List的值时遇到问题。我有这段代码:

            Query<User> qr=ds.createQuery(User.class).field("UserID").equal(52005);
            List<User> l=qr.asList();
            Iterator i=l.iterator();
            System.out.println(i.next().toString());

我有一个列表l此列表中填充了对数据库的查询(返回带有UserID 52005的记录)。如果我打印l的大小,我可以看到正确的值(1),因为有一个值为52005的UserID,但我现在的问题是我无法读取此列表的内容。如果我使用上面的代码,我会看到其他我想要的东西,即Untersuchungsraum.User@88c615

它似乎是编码的,Untersuchungsraum是包的名称,User是我的POJO类的名称。

这是我的Pojo:

@Entity("Users")
public class User {
    @Id private String id;
    private String City;
    private int  UserID; 

    /**
     * @return the city
     */
    public String getCity() {
        return City;
    }

    /**
     * @param city the city to set
     */
    public void setCity(String city) {
        this.City = City;
    }
...

如何在此情况下访问我的列表值?如何在列表中查看城市值l

3 个答案:

答案 0 :(得分:6)

问题不在于列表或迭代器,而是您处理User的方式。当你跑:

 System.out.println(i.next().toString());

它会调用未被覆盖的User#toString(),因此它实际上会调用Object#toString。这给了你那个东西。使用:

 System.out.println(i.next().getCity());

答案 1 :(得分:0)

您需要的只是list.get(0).getCity()

答案 2 :(得分:0)

        Query<User> qr=ds.createQuery(User.class).field("UserID").equal(52005);
        List<User> l=qr.asList();
        if(l!=null && l.size()>0){
             User user =  l.get(0);
             System.out.println(user.getCity());
             System.out.println(user.getUserID());

        }