Java中的AbstractCollection toString()方法及示例
在Java中,AbstractCollection
是Collection
接口的一個抽象類,它提供了一些通用的方法來實現(xiàn)Collection
接口。愛掏網(wǎng) - it200.com其中,toString()
方法就是其中之一,在本文中,我們將詳細(xì)討論Java中的AbstractCollection
的toString()
方法及其實現(xiàn)方式,同時給出一些示例。愛掏網(wǎng) - it200.com
AbstractCollection
中的toString()
方法聲明如下:
public String toString() {
Iterator<E> it = iterator();
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next();
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
}
通過這段代碼,我們可以了解到toString()
方法實際上是一個迭代器,在迭代集合中的元素,并將其轉(zhuǎn)換成一個字符串。愛掏網(wǎng) - it200.com其實現(xiàn)方法也很簡單,只需先將起始字符設(shè)為[
,然后不斷遍歷元素,將其添加到字符串中,并在元素之間插入逗號和空格。愛掏網(wǎng) - it200.com最后,在末尾加上]
字符,就生成了一個完整的字符串。愛掏網(wǎng) - it200.com
示例
下面是一個簡單的使用示例:
import java.util.ArrayList;
public class TestAbstractCollectionToString {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("pear");
System.out.println(list.toString());
}
}
這段代碼使用了ArrayList
類的實現(xiàn),并向其中添加了三個字符串元素"apple"
、"banana"
和"pear"
。愛掏網(wǎng) - it200.com最后,通過System.out.println()
方法輸出了該集合的字符串表示形式:
[apple, banana, pear]
上面的結(jié)果是由toString()
方法生成的,其中元素以逗號和空格分隔,并被括在方括號中。愛掏網(wǎng) - it200.com需要注意的是,這里的輸出結(jié)果是由ArrayList
類自己的toString()
方法生成的,而不是由AbstractCollection
的toString()
方法生成的。愛掏網(wǎng) - it200.com但是,由于ArrayList
是AbstractCollection
的子類,因此它的toString()
方法隱式地繼承了自AbstractCollection
中的實現(xiàn)。愛掏網(wǎng) - it200.com
下面是一個更為復(fù)雜的示例,它演示了如何在自定義類中使用AbstractCollection
的toString()
方法:
import java.util.AbstractCollection;
import java.util.Iterator;
public class MyCollection<T> extends AbstractCollection<T>{
private T[] array;
private int size;
public MyCollection() {
array = (T[])new Object[10];
size = 0;
}
public boolean add(T element) {
if (size < array.length) {
array[size] = element;
size++;
return true;
}
return false;
}
public Iterator<T> iterator() {
return new MyIterator();
}
public int size() {
return size;
}
private class MyIterator implements Iterator<T> {
private int nextIndex;
public boolean hasNext() {
return nextIndex < size;
}
public T next() {
if (!hasNext())
throw new IndexOutOfBoundsException();
return array[nextIndex++];
}
}
public static void main(String[] args) {
MyCollection<String> collection = new MyCollection<>();
collection.add("apple");
collection.add("banana");
collection.add("pear");
System.out.println(collection.toString());
}
}
在這個示例中,我們定義了一個名為MyCollection
的類,它繼承了AbstractCollection
。愛掏網(wǎng) - it200.com該類具有一個通用的數(shù)組array
和一個計數(shù)器size
,用于保存集合中的元素和元素的數(shù)量。愛掏網(wǎng) - it200.com類中還定義了一個內(nèi)部類MyIterator
,用于迭代集合中的元素。愛掏網(wǎng) - it200.com
在MyCollection
的add()
方法中,我們檢查了數(shù)組是否已滿,如果沒滿,則將元素添加到數(shù)組中,并將計數(shù)器加1。愛掏網(wǎng) - it200.com另外,我們還實現(xiàn)了iterator()
方法和size()
方法,分別返回一個MyIterator
對象和集合中元素的數(shù)量。愛掏網(wǎng) - it200.com
在MyIterator
類中,我們實現(xiàn)了必要的迭代方法hasNext()
和next()
,它們用于遍歷集合中的元素。愛掏網(wǎng) - it200.comhasNext()
方法檢查是否還有元素可以遍歷,而next()
方法返回當(dāng)前元素,并將迭代器指針移動到下一個元素。愛掏網(wǎng) - it200.com
最后,在main()
方法中,我們創(chuàng)建了一個MyCollection<String>
對象,并向其中添加了三個字符串元素"apple"
、"banana"
和"pear"
。愛掏網(wǎng) - it200.com最后,我們通過System.out.println()
方法輸出了該集合的字符串表示形式:
[apple, banana, pear]
上述結(jié)果與前面的示例結(jié)果相同,由AbstractCollection
的toString()
方法生成。愛掏網(wǎng) - it200.com
結(jié)論
Java中的AbstractCollection
類提供了通用的toString()
方法,用于將集合轉(zhuǎn)換成字符串。愛掏網(wǎng) - it200.com它的實現(xiàn)方式很簡單,只需遍歷集合中的元素,并將它們添加到一個字符串中即可。愛掏網(wǎng) - it200.com如果你想在自己的類中使用該方法,只需繼承AbstractCollection
類,并實現(xiàn)必要的方法即可。愛掏網(wǎng) - it200.com