Java中的AbstractCollection add()方法:示例
在Java中,AbstractCollection是所有集合類的抽象基類。愛掏網 - it200.com它實現了大多數的集合接口方法,讓子類只需要繼承它并根據自身特性實現少數接口方法即可。愛掏網 - it200.com其中就包含了add方法。愛掏網 - it200.com
在AbstractCollection類中,add方法的定義如下:
public boolean add(E e) {
throw new UnsupportedOperationException();
}
這里定義了一個拋出UnsupportedOperationException異常的方法。愛掏網 - it200.com子類必須實現它才能使用。愛掏網 - it200.com
下面我們來看一個ArrayList的示例,它繼承了AbstractCollection,并實現了add方法:
import java.util.AbstractCollection;
import java.util.ArrayList;
public class MyList extends AbstractCollection<String> {
private ArrayList<String> list = new ArrayList<>();
@Override
public boolean add(String str) {
return list.add(str);
}
@Override
public int size() {
return list.size();
}
@Override
public String toString() {
return list.toString();
}
public static void main(String[] args) {
MyList myList = new MyList();
myList.add("Hello");
myList.add("World");
System.out.println(myList);
}
}
這段代碼中,我們自定義了一個集合類MyList,它繼承了AbstractCollection類,并實現了add方法。愛掏網 - it200.com在add方法中,我們調用了ArrayList的add方法來添加元素。愛掏網 - it200.com同時我們還實現了size方法和toString方法來獲取集合大小和輸出集合內容。愛掏網 - it200.com
運行該程序,輸出如下:
[Hello, World]
可以看到我們自定義的集合類MyList成功地添加了兩個元素,并成功輸出了集合內容。愛掏網 - it200.com
除了ArrayList,其他繼承AbstractCollection的集合類也需要實現add方法。愛掏網 - it200.com例如,HashSet的add方法的定義如下:
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
該方法將元素作為鍵值對加入到HashSet的底層HashMap中,并返回添加是否成功。愛掏網 - it200.com
再例如,LinkedList的add方法的定義如下:
public boolean add(E e) {
linkLast(e);
return true;
}
void linkLast(E e) {
final Node<E> l = last;
final Node<E> newNode = new Node<>(l, e, null);
last = newNode;
if (l == null)
first = newNode;
else
l.next = newNode;
size++;
modCount++;
}
該方法將元素加入到LinkedList的尾部,并返回添加是否成功。愛掏網 - it200.com
在使用繼承了AbstractCollection的自定義集合類時,我們只需要實現即可使用這些集合類與Java內置集合類如ArrayList、HashSet、LinkedList 一樣。愛掏網 - it200.com通過實現add方法可以給集合類添加元素,實現size方法可以獲取集合大小。愛掏網 - it200.com
在Java中,AbstractCollection是所有集合類的抽象基類。愛掏網 - it200.com熟練掌握繼承它的子類中add方法的實現方式,能更加靈活地使用Java內置集合類或自定義集合類,提高代碼的可重用性、可擴展性。愛掏網 - it200.com