![](/img/trans.png)
[英]JAVA: How to convert String ArrayList to Integer Arraylist?
[英]How to convert a ArrayList of Objects into List of Integer in java
我使用此本地查詢來獲取數據。 select c.id,c.name from customer c,information i where i.status=1 and c.id=i.customerId
並且我使用以下代碼將對象列表轉換為整數列表,如下所示:
public List<Integer> getAllIdsByGroupId(Integer groupId) throws Exception {
List<Object[]> list = repository.getAllIdsByGroupId(groupId);
List<Integer> ids = repository.mapIds(list);
return ids;
}
public List<Object[]> getAllIdsByGroupId(Integer groupId) {
Query query = entityManager.createNativeQuery("select c.id,c.name from customer c,information i where i.status=1 and c.id=i.customerId and c.groupId=:groupId");
query.setParameter("groupId", groupId);
List<Object[]> list = query.getResultList();
if (list == null || list.isEmpty()) {
return null;
}
return list;
}
public List<Integer> mapIds(List<Object[]> list) {
List<Integer> ids = new ArrayList<Integer>();
if (list != null && !list.isEmpty()) {
Integer id;
for (Object[] object : list) {
id = (object[0] != null ? (Integer) object[0] : null);
ids.add(id);
}
}
return ids;
}
該查詢檢索具有ID和名稱的列表。上面的代碼無例外地給出了輸出。但是我要求僅具有ID的列表。 當我按如下方式從查詢中刪除c.name時, select c.id from customer c,information i where i.status=1 and c.id=i.customerId
上面的代碼失敗並產生異常
java.lang.Integer cannot be cast to [Ljava.lang.Object;
有幫助嗎? 提前致謝。
如果您使用JPA / Hibernate來獲取單列數據,則它隱式返回List<Integer>
(基於該列的類型),因此無需將其轉換為Integer列表。
一般規則:
問題出在類型轉換Change List<Object[]> list = query.getResultList();
到List<Object> list = query.getResultList()
它是您的代碼嘗試轉換的對象列表,並將整數轉換為數組列表。
如果您只是嘗試獲取ID,則List<Integer> list = query.getResultList()
也將足夠
試試這個可能不會在我的編輯器中嘗試,但是我想這個解決方案之一可以幫助您。
public List<Integer> mapIds(List<Object[]> list) {
List<Integer> ids = new ArrayList<Integer>();
if(list != null && !list.isEmpty()) {
int id;
for(Object[] object : list) {
id = (int) (object[0] != null ? object[0] : null);
ids.add(id);
}
}
return ids;
}
雖然問題是缺乏大量的信息,對最可能的原因ClassCastException
是你想投未中鍵入對象Integer
輸入Integer
。 我不確定要傳遞給方法的列表中有什么,但是如果列表確實包含一些Integer
類型的對象,那么您可以嘗試在將element object[0]
轉換為Integer
之前檢查一下,
public List<Integer> mapIds(List<Object[]> list) {
List<Integer> ids = new ArrayList<Integer>();
if (list != null && !list.isEmpty()) {
Integer id;
for (Object[] object : list) {
id = ((object[0] != null && object[0] instanceof Integer) ? (Integer) object[0] : null);
ids.add(id);
}
}
}
return ids;
}
但是,如果list
的對象不包含任何Integer
對象,則實現您正在執行的操作的唯一方法是通過某種方式檢索每個int
值來為每個object[0]
初始化一個Integer
對象。 只有您知道如何執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.