簡體   English   中英

如何在Java中迭代向量並僅存儲指定的類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM