java - 如何从 List<Object> (Java) 获取数据?

标签 java

我是 Java 新手,在显示对象列表中的数据时遇到问题。我有一个简单的方法,它应该跨多个表收集数据并将其返回给我的 Controller :

public List<Object> getHouseInfo(){
Query q = em.createNativeQuery("SELECT houses.id, addresses.country, addresses.region, house_details.rooms, house_details.square FROM houses, addresses, house_details");
List<Object> myList = q.getResultList(); 
return myList;}

现在我想在 Controller 中获取这些数据,但我不知道如何从列表中获取单个结果。我试着做这样的事情:

List<Object> list = getHouseInfo();
for (int i=0; i<list.size; i++){
System.out.println("Element "+i+list.get(0));}

但我只得到对此对象的引用(例如 [Ljava.lang.Object;@167a47b)。我也尝试过使用 Iterator,但结果是一样的。我尝试使用这样的代码:

List<Object> list = getHouseInfo();
for (int i=0; i<list.size; i++){
System.out.println("Element "+i+list.get(0)[0]);}

但这对我也没有帮助 - 这以编译错误结束。

有人能告诉我如何从这个列表中获取“id”(整数值)吗? 我在我的“ View ”中使用 MyFaces,其中我有这样的代码(houseControll 是我的 JSF 托管 Bean 的名称 - Controller ):

<t:dataList id="myDataList" value="#{houseControll.fullOffer}" var="element" rows="3" >
...
<t:outputText id="houseId" value="#{element[0]}"/>
...
</t:dataList>

此代码正确显示了“id”值 - 我有 1,2,3,... 值。我怎样才能在我的 Controller 中得到相同的结果?如何打印 Controller 中的数据?

最佳答案

对于初学者来说,您没有正确地遍历结果列表,您根本没有使用索引 i。尝试这样的事情:

List<Object> list = getHouseInfo();
for (int i=0; i<list.size; i++){
   System.out.println("Element "+i+list.get(i));
}

看起来查询返回了一个对象数组列表,因为数组不是覆盖 toString 的正确对象,您需要先进行转换,然后再使用 Arrays.toString()。

 List<Object> list = getHouseInfo();
for (int i=0; i<list.size; i++){
   Object[] row = (Object[]) list.get(i);
   System.out.println("Element "+i+Arrays.toString(row));
}

关于java - 如何从 List<Object> (Java) 获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123299/

相关文章:

java - 如何将属性值与字符串进行比较

java - 使用当前的库,我将如何为文本字符串制定简单的加密/解密方法?

java - 为什么 Ant 删除任务不起作用?

java - 如何禁止 Java 列表中不同类的实例?

java - 检查 for 循环内条件的最短代码

java - 无法通过互联网访问本地托管的项目?

java - 什么是 ServiceLoader 以及如何使用它?

java - Java HashMap 的排序迭代

java - Spring MVC 返回 HTTP 406 响应

java - BigInteger 使用多少空间?