Re: [問題] 用物件名稱抓取物件
你需要的是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://www.ptt.cc/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
推
09/03 16:08, , 1F
09/03 16:08, 1F
推
09/03 18:40, , 2F
09/03 18:40, 2F
原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
→
09/04 10:59, , 3F
09/04 10:59, 3F
→
09/04 21:35, , 4F
09/04 21:35, 4F
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章