我有一个用例,我需要遍历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();
}
但我认为会有比这更好的方法。
答案 0 :(得分:19)
假设你有一个班级Method
,那么代码可能是这样的:
List<Method> list = new ArrayList<Method>();
for (Object obj : vector) {
if (obj instanceof Method) {
list.add(obj);
}
}
答案 1 :(得分:5)
没有人担心在没有同步的情况下迭代Vector吗?
如果vector
不是线程限制的,则在存在修改其内容的另一个线程时,for-each迭代可能会抛出ConcurrentModificationException
。
答案 2 :(得分:0)
在Java 8中,您可以调用返回向量元素流的.stream()
方法,因此可以通过调用收集器来存储元素(例如,在列表中)
Vector<String> vec = new Vector<>();
vec.add("hello");
vec.add("world");
List<String> list = vec.stream().collect(Collectors.toList());