作者chen1025 (小陈)
看板java
标题Re: [问题] 用物件名称抓取物件
时间Wed Sep 3 13:07:41 2014
你需要的是TreeMap的容器物件。
TreeMap<String,Obj> myContainer=new TreeMap<>();
for(int i=0;i<=10;i++){
Obj o=in.readobject();
myContainer.put("o"+i,o);
}
取出名称为o2的物件就是
Obj o=myContainer.get("o2");
put(key,value); key放你的名称 value就是整个物件
通常名称都是要有意义的,例如学号、姓名
用随机数也要知道这个名称才能取
Java的object本身就是一个记忆体位置
在一些Design Pattern的书,还有更多的作法,
不过建议你先熟悉Colletion的操作。
※ 引述《ray01080 (阿勒)》之铭言:
: 大家好 java新手发问 如有蠢问题请多包涵>"<
: 我现在在写一个servlet的程式,然後遇到一个问题
: 今天有一个接收器Object obj=in.readobject负责把物件读进来
: 进来以後我把它offer到一个priority queue里面
: 然後它就重覆接收->送到queue这个动作
: 但是假设我送了10个进queue以後
: 我想要更改我送进去queue里面其中一个物件的其中一样数值(假设是int)
: 我不知道要怎麽抓到我之前送进去的那个物件(obj会被後面接收的洗掉)
: 自己是有想一个方法,但是不确定可行性或有没有这种函式之类的
: 因为java有帮obj设定它的名称
: 假设这程式叫Receiver.java
: 然後接收器每接一个obj就会帮它取名叫Receiver$obj@69e4fede (@後面为随机数字/英文
: )
: 那我有办法纪录这个字串以後用这个字串来找到我的这个物件吗
: 或是有更方便的方法 不好意思麻烦各位大大赐教了= ="
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.250.83.99
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1409720863.A.94E.html
※ 编辑: chen1025 (60.250.83.99), 09/03/2014 13:08:15
※ 编辑: chen1025 (60.250.83.99), 09/03/2014 13:08:36
1F:推 ray01080: 是的 我也找到了 感谢:) 那我用Hashtable可以吗? 09/03 16:08
2F:推 roder: 可以阿 看你要不要排序功能 09/03 18:40
原Po补充:
HashTable或是HashMap的处理时间是TreeMap快
一个是O(1)一个是O(logN)
如果在数百万笔的资料以上,大概会快三倍的时间吧。
但是TreeMap本身有排序的功能,
你可以依序列出目前所有的Key,像是学号姓名等,
上面这一点在侦错和程式撰写时,是重要的。
而且比较不会浪费记忆体,Hash杂凑是用空间换取时间。
所以我通常都是用TreeMap为主,要特别注意时间效率的,
而且计算量极大,会采用Hash的储存结构。
以上经验给您参考。
※ 编辑: chen1025 (60.250.83.99), 09/04/2014 09:54:08
※ 编辑: chen1025 (60.250.83.99), 09/04/2014 09:56:12
※ 编辑: chen1025 (60.250.83.99), 09/04/2014 09:58:45
※ 编辑: chen1025 (60.250.83.99), 09/04/2014 10:00:48
3F:→ swpoker: 大量的做法就要考虑了~通常记忆体不会放太多~会爆 09/04 10:59
4F:→ wuliou: 百万笔以上 好资料库不用吗 09/04 21:35