[英]How to iterate over the vector in Java and store only the specified class?
我有一個用例,我需要迭代Vector
元素並將結果存儲在say數組中,只要該實例是類method
這有什么容易的嗎?
目前我這樣做:
Iterator itr = vec.iterator();
Iterator element = vec.iterator();
while(itr.hasNext())
{
boolean method = itr.next() instanceof Method;
if(method)
System.out.println( "\t" + ( (Method)(element.next()) ).name);
else
element.next();
}
但我認為會有比這更好的方法。
假設你有一個類Method
,那么代碼可能是這樣的:
List<Method> list = new ArrayList<Method>();
for (Object obj : vector) {
if (obj instanceof Method) {
list.add(obj);
}
}
是不是有人擔心沒有同步迭代Vector?
如果vector
不是線程約束的,則在存在修改其內容的另一個線程時,for-each迭代可能拋出ConcurrentModificationException
。
在Java 8中,您可以調用返回矢量元素流的.stream()
方法,因此可以通過調用收集器來存儲元素,例如在列表中。
Vector<String> vec = new Vector<>();
vec.add("hello");
vec.add("world");
List<String> list = vec.stream().collect(Collectors.toList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.