考慮下面的需求,從配置檔案中,讀取一些資料,這些資料放到乙個集合中,獲取集合,使用方法a,完成任務。該怎麼做?
1、首先明確一點,堅決不能讓a返回引用。
2、方法a在棧上建立集合,返回集合。不存在記憶體洩漏的問題,但是要付出copy代價。
3、方法a在堆上建立集合,返回集合的指標,copy代價很低,但是會存在記憶體洩漏的問題。
4、主調方法建立乙個集合,把集合的引用傳遞給被調方法a,a修改集合的內容。這個不直觀,客戶要一些東西,方法a要求客戶準備乙個容器,a在容器中填充內容。
5、採用哪種方法,要看具體的使用場景,如果集合內容很小,copy代價小,就不要用指標,否者用指標。
6、還要考慮另外一種情況,返回的集合是要客戶維護,還是a維護。比如,客戶在乙個迴圈中,每次都需要集合,這就會導致a重複讀取配置檔案。解決這個問題的辦法是:客戶在迴圈之前,先把集合儲存起來。但是,考慮下面的情況,程式中很多地方,不同的客戶,都需要這個集合,那麼方法a應該維護集合,讀取一次,內部儲存起來,下次客戶再申請,直接返回就行了。這就意味著,程式執行過程中,集合的記憶體是不能釋放的,可以使用指標,為了避免記憶體洩漏,可以使用智慧型指標。
獲取集合中元素的方法總結
集合是我們在平時應用中最多的一種資料容器,現對集合中的元素獲取方法做一下總結 使用for迴圈遍歷加上集合的get 方法獲取 複製 1 arraylist list new arraylist 2 list.add 1 3 list.add 2 4 list.add 3 5 for int i 0 i...
C 獲取當前路徑的方法集合
1 c 獲取當前路徑的方法集合 2posted on 2008 06 1909 17guofu 閱讀 1990 0 編輯 收藏 網摘 3 獲取當前程序的完整路徑,包含檔名 程序名 4string str this gettype assembly.location 5result x exe exe...
獲取Map集合的資料
傳統方法一 test public voiddemo hashmap map newhashmap map.put 1 aaa map.put 2 bbb map.put 3 ccc setset map.keyset iterator it set.iterator while it.hasnex...