A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhousaowen 黑马帝   /  2011-9-5 17:36  /  2634 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

SequenceInputStream(Enumeration<? extends InputStream> e)中的枚举元素可以通过集合来获得。
Vector<F> v=new Vector<F>();
Enumeration<F> en=v.elements();
对于vector集合可以直接得到枚举元素。但是对于Arraylist却不可以,new一个对象并且必须覆盖hasMoreElements和nextElement方法
ArrayList<F> al=ArrayList<F>();
final Iterator<F> it=al.iterator();
Enumeration<F> en=new Enumeration(){
                  public boolean hasMoreElements(){
                          return it.hasNext();
                          }
                          public FileInputStream nextElement(){
                                  return it.next();
                                  }
                  }
疑问:1,在集合类中什么样的可以直接获得枚举元素。
2.比如那些不可以直接获得枚举元素的是否可以通过迭代器来获得枚举元素。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

5 个回复

倒序浏览
黑马网友  发表于 2011-9-5 21:54:46
沙发
等我能看懂问题的时候,我会记得回来答题的

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 这回答?

查看全部评分

回复 使用道具 举报
那些不可以直接获得枚举元素的是否可以通过迭代器来获得枚举元素。
应该不行吧,枚举是Vector特有的取出方式。枚举和迭代器其实是一样的,只因为枚举的名称和方法的名称都太长,所以被迭代器取代了。
[ 本帖最后由 黑马李刚 于 2011-09-06  15:02 编辑 ]
回复 使用道具 举报
黑马网友  发表于 2011-9-7 10:52:56
板凳

回复 楼主 的帖子

问题1:因为Iterator代替了 Enumeration。所以,可以获得Enumeration的集合类,一定是出现在Iterator之前,也就是1.2之前的集合类可以使用Enumeration.
问题2:两者可以转换,我从网上拷了一段代码,你可以参考一下.
public Enumeration children(){
  Vector<AdapterNode> all = new Vector<AdapterNode>();
  for(Iterator itr = omelement.getChildElements(); itr.hasNext(); ){
   AdapterNode node = new AdapterNode((OMElement)itr.next());
   all.add(node);
  }
  Enumeration<AdapterNode> enu = all.elements();
  return enu;
}
回复 使用道具 举报
黑马网友  发表于 2011-9-8 10:50:21
报纸
总算看明白一点点了。。。。
interface Enumeration ——  这是一个早期的  迭代接口,,,不是什么枚举类型,,虽然它的中文意思是列举、枚举,  但其实 就是用来 列举或者说 迭代 元素的,,
。。我个人习惯说枚举是  enum 修饰的东东。。
  通过迭代器,,得到  元素  :  Vector、Hashtable  都可以用Enumeration  ,具体看jdk中 返回值是Enumeration   的,,而 Enumeration  本身只有两个方法,,,去jdk看下,ok了。。。
  List、Set集合都可以用 Iterator,,,List还可以用 ListIterator。。具体操作方法,,jdk、或网上找找。。
------------------
如果取出的元素不想类型转换,,那么声明的时候 都用上泛型。。

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2 回答的不错!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-10 09:08:32
地板

回复 板凳 的帖子

网上的这个例子有点麻烦[code]Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(new FileInputStream("D:\\workplace\\testHeima\\a.txt"));
v.add(new FileInputStream("D:\\workplace\\testHeima\\buf.txt"));
v.add(new FileInputStream("D:\\workplace\\testHeima\\count.ini"));
Enumeration<FileInputStream> en = v.elements();[/code]直接使用elements就能返回集合

如果不是Vector的集合想要转到枚举类型
那就用Lterator迭代,并实现Enumeration接口下的2个方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马