如何在Java中迭代向量并仅存储指定的类?
我有一个用例,我需要迭代如何在Java中迭代向量并仅存储指定的类?,java,iterator,Java,Iterator,我有一个用例,我需要迭代向量元素,并且仅当该实例属于类方法 有什么容易做到的吗 目前我正在这样做: Iterator itr = vec.iterator(); Iterator element = vec.iterator(); while(itr.hasNext()) { boolean method = itr.next() instanceof Method; if(method) System.o
向量
元素,并且仅当该实例属于类方法
有什么容易做到的吗
目前我正在这样做:
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();
}
但我认为还有比这更好的方法。假设您有一个类
方法,那么代码可以是这样的:
List<Method> list = new ArrayList<Method>();
for (Object obj : vector) {
if (obj instanceof Method) {
list.add(obj);
}
}
List List=new ArrayList();
对于(对象对象对象:向量){
if(obj instanceof方法){
列表。添加(obj);
}
}
没有人关心在没有同步的情况下迭代向量吗
如果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());
Vector vec=new Vector();
添加向量(“你好”);
向量加上(“世界”);
List List=vec.stream().collect(Collectors.toList());
您的布尔值方法
和名为方法
的类非常容易混淆。类名应始终以大写字母开头。方法
有冲突吗这种方法有什么问题?如果不使用像Guava这样的外部库,您将找不到任何其他方法。(注意:应该删除else部分)对于拼写错误导致的方法
冲突表示抱歉。这不是对问题的回答,而是可以(可能应该)添加到任何答案中的备注。