关于vector这个类的使用(急,在线等待,回复必加分)
请问一下..我把一些用户信息存入啦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




