使用數組列表和列表之間的區別是什麼?實際上,當我想用istself實例化List時,Java引發了一個異常,實際上我必須用ArrayList來實現。數組列表和列表之間的區別
-1
A
回答
0
0
列表是一種被稱爲接口的一般對象類型。有許多類型的列表,包括但不限於ArrayList和LinkedList。列表接口爲處理列表所需的一組方法提供句柄,而不必知道它是哪種類型的列表。任何類型的列表都可以分配給List類型的變量。但是列表本身不能被實例化,因爲它只是一個接口而不是一個實現。請參閱Java列表教程以獲取更多信息。 http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html
1
List
是抽象類型 - 一個java interface
。接口定義在實現List
的對象上可找到的方法。
ArrayList
是List
接口(它在內部使用數組來存儲元素,因此名稱)的具體實現。
一種ArrayList
是List
,但List
不是一定一個ArrayList
。還有其他的實現,比如LinkedList
。
0
你的代碼引發異常的原因List
是抽象的,你不能實例化抽象的東西。
列表是一個接口。這裏您定義合同這種類型的行爲簽名。
ArrayList是一個列表,原因implements List
,ArrayList是一個具體的實現所以然後讓所有的方法由List接口定義。
在Java中,你可以明顯實例製作anonymous classes
一個接口,但你真的有一個實現與雜牌List
合同的具體類(這就是爲什麼匿名名稱)。
下面是一個例子
List list = new List(){
@Override
public boolean add(Object arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public void add(int arg0, Object arg1) {
// TODO Auto-generated method stub
}
@Override
public boolean addAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean addAll(int arg0, Collection arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
@Override
public boolean contains(Object arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean containsAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public Object get(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int indexOf(Object arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public Iterator iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public int lastIndexOf(Object arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public ListIterator listIterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public ListIterator listIterator(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean remove(Object arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public Object remove(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean removeAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean retainAll(Collection arg0) {
// TODO Auto-generated method stub
return false;
}
@Override
public Object set(int arg0, Object arg1) {
// TODO Auto-generated method stub
return null;
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public List subList(int arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
@Override
public Object[] toArray() {
// TODO Auto-generated method stub
return null;
}
@Override
public Object[] toArray(Object[] arg0) {
// TODO Auto-generated method stub
return null;
}
};
由於@Bohemian說,如果你讓你自己的列表實現你要關心Liskov Substitution Principle,以不破此,並按照合同。
相關問題
- 1. 列表和序列之間的區別
- 2. java中cast陣列列表和cast數組之間的區別
- 3. 列表,排序列表和數組列表之間有什麼區別? (c#)
- 4. Clojure:列表和返回列表的函數之間的區別
- 5. Kotlin中的列表和數組類型之間的區別
- 6. 數組和包裝列表之間的區別?
- 7. 列表切片和直接分配列表之間的區別?
- 8. 列表<T>和列表<object>之間的區別?
- 9. 在Python中列表和列表[:]之間有什麼區別?
- 10. 列表分配和元組賦值之間的區別?
- 11. 日期列表之間的區別
- 12. Python中列表之間的區別
- 13. 在Python中的列表,序列和切片之間的區別?
- 14. R中的散列和列表之間的區別
- 15. Java:迭代器和陣列列表之間的區別
- 16. 參數列表中的nat_pairs()和(nat_pairs())之間的區別
- 17. 當將一組轉換爲列表時,列表()與[]之間的區別
- 18. 請告訴我之間「在列表X:」區別「的X列表[:]:」和
- 19. 將它分配給新列表對象和複製列表之間的區別
- 20. 指南針風格 - 內嵌塊列表和水平列表之間的區別
- 21. Julia的nx1陣列和n元素數組之間的區別
- 22. MSI:MSI目錄表的DefaultDir列中的(。)和(。:。)之間的區別
- 23. 中間件陣列和組合中間件之間的區別?
- 24. Python中的Bytearray和列表之間的區別
- 25. 長度爲1的tcl列表和標量之間的區別?
- 26. python3中的[]和列表()之間的區別
- 27. 列表<T>和數組索引器之間有什麼區別?
- 28. 列表和元組有區別嗎?
- 29. 描述堆棧和列表堆棧之間的區別?
- 30. 列表和矩陣之間的區別(Android)
[什麼是列表與數組列表?](http://stackoverflow.com/questions/6867484/what-is-a-list-vs-an-arraylist)和[Java List vs ArrayList ](http://stackoverflow.com/questions/9309093/java-list-vs-arraylist)。 –
當你用自己實例化列表時,你確定你正在得到一個異常而不是編譯時錯誤嗎? – bschandramohan