CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  非技术区

关于vector这个类的使用(急,在线等待,回复必加分)

楼主zplora()2006-07-01 16:18:44 在 Java / 非技术区 提问

请问一下..我把一些用户信息存入啦vector这个容器..请问如何访问里面的元素,并把他们写入文件  
  谢谢~! 问题点数:100、回复次数:40Top

1 楼liujun999999(减肥中...)回复于 2006-07-01 16:21:16 得分 0

elementAt(int);这个方法可以取出来  
  取出来之后再强制转化成你存进去的那个类型Top

2 楼zplora()回复于 2006-07-01 16:31:11 得分 0

如果我是保存多个数据。是一个一个的加进去,还是一次性加进去呢  
  例如  
  我现在要接受用户姓名,密码等信息..  
  我使用啦  
  Vector   vct   =   new   Vector();  
  public   void   addData(String   data)  
  {  
  vct.addElement(data);  
  }  
  Top

3 楼believefym(feng)回复于 2006-07-01 16:35:32 得分 0

把用户信息封装到一个类比较好,存的时候直接存类的实例,写入文件的话你重写一下封装的类的toString方法,然后用FileWriter就可以搞定了Top

4 楼zplora()回复于 2006-07-01 16:40:35 得分 0

如果按上面那位那个的说法也可以!  
  我现在在做一个登陆筐,把用户信息存入到服务器,然后用服务器把信息写入文件(象注册一样)等下次登陆,就可以认证用户名,用户密码密码登陆  
   
  因为我没有学数据库,不晓得怎么弄...  
  Top

5 楼xiaoqulai(肖曲来)回复于 2006-07-01 17:01:09 得分 0

我想问问你用的JDK是1.5的吗?  
  如果是,请不要使用vector,因为在1.5中,我们可以使用泛型数组类ArrayList,这个类在 1.4的版本中做了很大的改动,它更加有效,我们没有任何理由还使用vector.除非你是C++程序员,呵呵.  
  根据你的问题,我推测你现在是不是想保存一组信息,但希望不要固定你用来存储的空间呢?  
  假设你有一个信息类Info,你这样使用:  
  ArrayList<Info>   aInfo   =   new   ArrayList<Info>();来为你的信息类来分配空间,空间的大小是自动伸缩的.  
  你可以给它限定一个空间:  
  aInfo.ensureCapacity(100);//自动new100个空间,但超过后它可以自动增加,跟SQL里建数据库的时候差不多;  
  现在,你就可以把它当作数组来使用啦!它还有如下方法:  
  aInfo.size//相当于数组的.length;  
  aInfo.initialCapacity//初始化空间,注意与ensureCapacity的区别;  
  aInfo.add//添加或插入新的元素,为重载方法;  
  其它的不错了,自己看文档去吧,还有很多方法,比如删除,插入,修改等,相信可以解决你的问题。  
  JDK5.0之前虽然也有ArrayList类,但保存的类型只能是object类型,现在可以是任何类型了,Vector将渐渐被人遗忘。  
  不清楚,我下次给你写个类。哈  
  Top

6 楼zplora()回复于 2006-07-01 17:34:20 得分 0

楼上的大哥果然是高手  
  不过我还是不懂  
  你可以加偶Q不  
  我出JAVA只有3个月而已  
  100282858  
  Top

7 楼zplora()回复于 2006-07-01 17:40:19 得分 0

我现在好像把问题复杂化呢Top

8 楼xiaoqulai(肖曲来)回复于 2006-07-01 21:43:23 得分 0

我不是高手,你这样说我不好意思.  
  我是照书上写的.我学JAVA才一个星期!  
  我看的是JAVA核心技术第7版,你可以搞来看看吧  
  不过我发现学过C++之后,在学JAVA,真的跟很有意思呢!而且学起来很快Top

9 楼xiaoqulai(肖曲来)回复于 2006-07-01 21:48:05 得分 0

不过如果你要存大量的信息,建议使用链表呢.  
  在C++中,基本上是不用向量存储数据的,因为对计算机来说,处理大量的数据的时候相当的麻烦呢.  
  把你要存储的信息封装在一个类中,然后写一个链表,想怎么样就怎么样,方法也是由你定.  
  要不你把具体的问题说出来,我写出来给你参考参考.虽然我JAVA,不过应该跟C++差不多的,而且JAVA比C++要简单的多了Top

10 楼loveyt(咆哮的独角兽^大家都在长大)回复于 2006-07-02 03:11:28 得分 0

数组的效率是最高的,然后是List,不应该使用Vector,效率很低下。对于楼上说的链表,LinkedList就是链表集合。Top

11 楼zhengviolet()回复于 2006-07-02 09:04:12 得分 0

偶原是C++的,现也转JAVA。  
  Vector   和ArrayList的区别就是Vector具有同步功能而ArrayList没有。  
  功能多了,当然就慢了!呵呵  
  Top

12 楼xiaoqulai(肖曲来)回复于 2006-07-02 09:42:10 得分 0

ArrayList有同步功能啊,楼上的看看JDK文档吧,在1.5版中,ArrayList跟以前的有了很大的改进,其实1.4以前,就有同步功能,不过是只能针对Object,而现在可以针对所有类了,语法跟c++的模版有点相同哦,都用了<>号!呵呵  
  总之一句话,1.5版本后的向量已经失去了意义!  
   
  而且偶认为ArrayList比Vector强的多Top

13 楼believefym(feng)回复于 2006-07-02 11:39:26 得分 0

ArrayList有同步功能啊  
  总之一句话,1.5版本后的向量已经失去了意义!  
  ---------------  
  楼上的api不知道怎么看的  
   
  Note   that   this   implementation   is   not   synchronized,摘自jdk1。5的api文档  
  我也给你总之一句话,你的分析很有问题,Vector怎么可能失去意义,线程安全的时候就是要用它,ArrayList是非同步的,not   synchronized!Top

14 楼hk8846(刀下无活人)回复于 2006-07-02 12:20:32 得分 0

应该是这样取值的(是从我的一端代码中截取出来的):  
  for(Iterator   i   =   v.iterator();i.hasNext();)  
                {  
                Vector   v2   =   (Vector)i.next();  
                for(Iterator   i2   =   v2.iterator();i2.hasNext();)  
                {  
                sbj_id[j]   =   (String)i2.next();  
                j++;  
                }  
                }Top

15 楼trumplet(检查)回复于 2006-07-02 13:47:34 得分 0

失去意义的类,在API里都会标明   Deprecation,  
   
  Vector类,在1.5API里并没有标明   Deprecation,所以它还是有应用价值的。Top

16 楼CrazyGou()回复于 2006-07-02 14:25:03 得分 0

Vector是线程安全的。如果没有这方面考虑的话,还是用ArrayList吧,效率要高点Top

17 楼xiaoqulai(肖曲来)回复于 2006-07-02 22:04:50 得分 0

不好意思,我没说清楚,我说没有意义是在对数句的存储上,在JAVA核心技第七版里明确的说了这句话.  
   
  我现在学JAVA仅仅一个星期,说错了,大家原谅.  
  我不是说的同步是内存分配同步,不好意思,说的不清楚  
  JAVA里面有很多类写的并不是很完善,API里却没有标明.比如类的封装,JAVA里面有很多变量没有设置为private,但是还是在使用.  
   
  "奇怪的是,这个问题至今还没有得到纠正,即使我们在本书的六个版本中已经指出了这一点,很明显,类库的设计者并没有读过这本书."   ---<<JAVA核心技术>>  
   
  "JAVA程序设计语言的老版本中,程序员使用Vector类实现动态数组,不过ArrayList类更加有效,没有任何理由一定要使用Verctor类"   ---<<JAVA核心技术>>Top

18 楼software_jianghai(走自己的路)回复于 2006-07-02 22:24:37 得分 0

Vector不是在多线程的环境下建议不要使用(影响性能)  
  可以考虑ArrayListTop

19 楼Ryo_Hazuki(困了)回复于 2006-07-02 23:30:26 得分 0

java.util.Collections的一些实用方法Top

20 楼trumplet(检查)回复于 2006-07-03 07:46:49 得分 0

Core   Java   原文:  
   
  If   you   are   a   veteran   Java   programmer,   you   may   have   used   the   Vector   class   whenever   you   needed   a   dynamic   array.   Why   use   an   ArrayList   instead   of   a   Vector?   For   one   simple   reason:   All   methods   of   the   Vector   class   are   synchronized.   It   is   safe   to   access   a   Vector   object   from   two   threads.   But   if   you   access   a   vector   from   only   a   single   threadby   far   the   more   common   case   your   code   wastes   quite   a   bit   of   time   with   synchronization.   In   contrast,   the   ArrayList   methods   are   not   synchronized.    
   
   
  We   recommend   that   you   use   an   ArrayList   instead   of   a   Vector   whenever   you   don't   need   synchronization.  
   
   
  原文并   没有   说不能使用   vector   类,只是说:  
   
  “只有是不需要同步的情况,推荐使用ArrayList代替Vector”Top

21 楼zplora()回复于 2006-07-03 16:46:13 得分 0

呵呵  
  大哥们的理论真的很强喔  
   
  Top

22 楼seesea10523()回复于 2006-07-03 18:24:20 得分 0

Vector   和ArrayList的区别就是Vector具有同步功能而ArrayList没有。  
  Top

23 楼grp0606grp()回复于 2006-07-05 12:52:15 得分 0

upTop

24 楼Javafan0(狂刀)回复于 2006-07-05 13:05:36 得分 0

顶,正想补补数据结构.Top

25 楼xiaoqulai(肖曲来)回复于 2006-07-24 20:20:57 得分 0

ArrayList<>   是不是同步无所谓。不同步我也可让它同步。  
  向量不用也罢Top

26 楼maquan('ma:kju)回复于 2006-07-24 22:03:35 得分 0

看   xiaoqulai(肖曲来)   老兄如此有主见,真不像是学   JAVA   才一星期的人。如果真是这样,照此下去,最多不过两个星期,一定会着手改造虚拟机了。  
  hehe,开个玩笑,老兄不要见怪     :DTop

27 楼crazycy(崔毅,blog:http://www.blogjava.net/crazycy/)回复于 2006-07-25 10:29:51 得分 0

尽量少用Vector;多用List(ArrayList)Top

28 楼dreamover(梦醒了〖http://hellfire.cn〗)回复于 2006-07-25 10:50:51 得分 0

泛型并不是ArrayList的专利,1.5中vector也可以用泛型!Top

29 楼boydream(show me the money!)回复于 2006-07-25 12:28:05 得分 0

我来学习Top

30 楼success_dream(sharp engineer)回复于 2006-07-25 13:21:11 得分 0

vector线程安全的,是同步的,而arraylist线程不安全,不同步;一般用arraylist!关于vector的方法参考jdk。Top

31 楼success_dream(sharp engineer)回复于 2006-07-25 13:23:17 得分 0

to   crazycy(崔毅):  
  arraylist和vector都是继承list接口的!Top

32 楼cocosunshine(panxj)回复于 2006-07-25 22:48:03 得分 0

其实他们区别是因为数据结构的问题,vector是1.0就出来的,arraylist是1.3的时候吧,其实他们都是继承list,都是使用object[]来构建Top

33 楼lbdz(我是一棵葱。站在风雨中)回复于 2006-07-26 10:30:41 得分 0

迭带Top

34 楼java_labyrinth((-_-)迷茫ing...)回复于 2006-07-26 10:51:42 得分 0

真强,我学了半年多了还不完全知道Vector和ArrayList的作为有多大呢,在此学习了!Top

35 楼xiaoqulai(肖曲来)回复于 2006-07-28 23:33:14 得分 0

ArrayList<>   是不是同步无所谓。不同步我也可让它同步。  
  向量不用也罢  
  -----------------------------------  
  这句话是我两个星期后又贴上去的,这个时候我已经对ArrayList<>有了一定的理解,也知道了什么是同步,让大家见笑了,第一次回贴是本人的处女贴,当时刚接触JAVA,还不知道什么是同步。  
   
  不过现在知道了。  
  即使不同步,我们可以这样写一个:  
  List   list   =   Collections.synchronizedList(new   ArrayList(...));  
  用包装器把它包装起来,不救同步了吗,哈哈Top

36 楼sjjf(水晶剑锋)回复于 2006-07-29 00:46:25 得分 0

干吗要多此一举?  
  有没有比较过两种做法那种更耗时?  
  Top

37 楼Preamble(Rubbish)回复于 2006-07-30 00:58:05 得分 0

我不知道1.5  
  但可以肯定在1.4种vector   里面的方法都加了synchronized  
  ArrayList   比较好用,因为它是基于数组的动态分配,速度自然要快!  
  一般不要使用Vector,或者LinkedList  
   
  另外搂主的问题,我想说,无论用Vector,或者ArrayList都不要直接加  
  而是同过类添加  
  比如  
  class   info  
  {   //密码  
  //用户名  
  }  
   
  List<info>   infoList   =   new   ArrayList<Info>;  
  ArrayList里的数据长度是相等时,速度会更快。  
   
   
  Top

38 楼2312(╰@oo恒星★)回复于 2006-09-14 13:56:15 得分 0

学习Top

39 楼yahunetbar()回复于 2006-09-14 14:06:00 得分 0

这么老的帖子都被你挖出来了啊   呵呵Top

40 楼dashi(喜欢莲的憨木鱼)回复于 2007-03-22 22:59:51 得分 0

灌水只不过是我表面的工作,我真正的身份是一位研究~僧。Top

相关问题

关键词

得分解答快速导航

  • 帖主:zplora

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo