public static void main(String args[])
{
ArrayList<String> names = new ArrayList<String>();
names.add("Brett");
ArrayList<String> names2 = new ArrayList<String>();
names2.add("John");
append(names, names2);
}
public static <E> void append(List<E> list1, List<E> list2)
{
Iterator list2Iterator = list2.listIterator();
while(list2Iterator.hasNext())
{
list1.add(list2Iterator.next());
}
}
我被要求將一個串列的元素附加到另一個串列中。我使用 list2 的迭代器來檢索每個元素,并將它們傳遞給 list1 的 add 方法。但是我收到了這個錯誤:不兼容的型別:物件無法轉換為 E。但是,如果我修改 append 方法:
public static <E> void append(List<E> list1, List<E> list2)
{
for (int i = 0; i < list2.size(); i )
list1.add(list2.get(i));
}
它作業得很好。串列迭代器和 get 方法都回傳相同的型別,但只有后者有效。我敢肯定原因很簡單,只是到目前為止我還沒有弄清楚。
謝謝,
uj5u.com熱心網友回復:
問題是在您的代碼中,您在獲取串列迭代器時丟失了型別引數。
public static <E> void append(List<E> list1, List<E> list2) {
Iterator<E> list2Iterator = list2.listIterator();
while(list2Iterator.hasNext()) {
list1.add(list2Iterator.next());
}
}
但是您應該避免手動將一個集合的所有元素一一添加到另一個集合中。這是一個更好的解決方案:
list1.addAll(list2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/347414.html
上一篇:如何修復此功能的輸出?
下一篇:根據元素的值將串列拆分為子串列?
