Vincent Jia 博客

          to be a better man, to be a bad man.

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            29 隨筆 :: 3 文章 :: 0 評(píng)論 :: 0 Trackbacks

          2012年6月27日 #

          2016年,收獲了什么,失去了什么。 
          博客沒有寫作。
          國家大事件幾多。
          posted @ 2017-12-04 16:53 iLinux 閱讀(217) | 評(píng)論 (0)編輯 收藏

          The Collections Framework







          The collections framework is a unified architecture for representing and manipulating collections, allowing them to be manipulated independently of the details of their representation. It reduces programming effort while increasing performance. It allows for interoperability among unrelated APIs, reduces effort in designing and learning new APIs, and fosters software reuse. The framework is based on fourteen collection interfaces. It includes implementations of these interfaces, and algorithms to manipulate them.
          Overview
          • Overview - An overview of the Collections framework.
          API Specification
          • API Reference - An annotated outline of the classes and interfaces comprising the collections framework, with links into the JavaDoc.
          Tutorials and Programmer's Guides
          • Tutorial - A tutorial introduction to the collections framework with plenty of programming examples.
          API EnhancementsMore Information
          • Design FAQ- Answers to frequently asked questions concerning the design of the collections framework.

          From: http://docs.oracle.com/javase/6/docs/technotes/guides/collections/index.html
          posted @ 2012-07-06 16:15 iLinux 閱讀(275) | 評(píng)論 (0)編輯 收藏

          API Enhancements

          posted @ 2012-07-06 16:14 iLinux 閱讀(281) | 評(píng)論 (0)編輯 收藏

          LinkedHashSet是JDK 1.4中引入的新的集合類(LinkedHashMap也是同期引入)。 LinkedHashSet,顧名思義,就是在Hash的實(shí)現(xiàn)上添加了Linked的支持。對(duì)于LinkedHashSet,在每個(gè)節(jié)點(diǎn)上通過一個(gè)鏈表串聯(lián)起來,這樣,就可以保證確定的順序。對(duì)于希望有常量復(fù)雜度的高效存取性能要求、同時(shí)又要求排序的情況下,可以直接使用LinkedHashSet。

          它實(shí)現(xiàn)了Set接口。存入Set的每個(gè)元素必須是唯一的,因?yàn)镾et不保存重復(fù)元素。但是Set接口不保證維護(hù)元素的次序(那里面的元素每次順序如何確定?TODO)。Set與Collection有完全一樣的接口Iterable,同時(shí)Set繼承了Collection。

          LinkedHashSet具有HashSet的查詢速度,且內(nèi)部使用鏈表維護(hù)元素的順序(插入的順序),于是在使用迭代器便利Set時(shí),結(jié)果會(huì)按元素插入的次序顯示。

          需求如: 含多個(gè)(有重復(fù))元素ArrayList,去除重復(fù)。

          1, 可以使用如下略顯冗余的代碼:
           1 public static List removeDuplicateWithOrder(List list) {
           2         Set set = new HashSet();
           3         List newList = new ArrayList();
           4         for (Iterator iter = list.iterator(); iter.hasNext();) {
           5             Object element = iter.next();
           6             if (set.add(element))
           7                 newList.add(element);
           8         }
           9         return newList;
          10     }
          此方法有濫用set之嫌。

          2, 我們也可以使用本文章中提及的LinkedHashSet:
          return new ArrayList<T>(new LinkedHashSet<T>(list));
          此方法,既利用set去除了重復(fù),又使用linked保持住了原順序。

          3, 貌似apache commons lang中有專門去重復(fù)的集合工具。

          這兒的鏈表操作是常量級(jí)的,這也是LinkedHashSet/LinkedHashMap比TreeSet/TreeMap性能更高的原因。當(dāng)然,LinkedHashSet不是thread-safe的,在多線程環(huán)境下,需要進(jìn)行同步包裝:
          Collections.synchronizedCollection(Collection);
          or:
          Collections.synchronizedSet(Set);
          在使用LinkedHashSet的iterator()方法遍歷元素時(shí),如果其他線程有讀取操作,也要進(jìn)行同步,否則,就會(huì)拋出同其它fail-fast一樣的由于刪除或增加操作而引起的CurrentModificationException。


          如上兩種方法的效率比較,設(shè)為TODO,
          1, 利用set.add(element)方法,本質(zhì)是利用其contains()方法判斷,而contains()的本質(zhì)就是遍歷。
          JDK doc中寫道:
          More formally, adds the specified element e to this set if the set contains no element e2 such that (e==null ? e2==null : e.equals(e2)). If this set already contains the element, the call leaves the set unchanged and returns false. In combination with the restriction on constructors, this ensures that sets never contain duplicate elements.
          2, 測(cè)試數(shù)據(jù),可以使用數(shù)據(jù)量:1W,5W,10W,100W。

          posted @ 2012-07-06 11:54 iLinux 閱讀(6221) | 評(píng)論 (0)編輯 收藏

          在當(dāng)前的系統(tǒng)中,大量使用了非泛型模式的Collection、List、Map、HashMap、HashTable。
          其關(guān)系、區(qū)別在于。
          posted @ 2012-06-29 17:50 iLinux 閱讀(264) | 評(píng)論 (0)編輯 收藏

          在美國得克薩斯州的一個(gè)風(fēng)雪交加的夜晚,一位名叫克雷斯的年輕人因?yàn)槠?#8220;拋錨”被困在郊外。正當(dāng)他萬分焦急的時(shí)候,有一位騎馬的男子正巧經(jīng)過這里。見此情景,這位男子二話沒說便用馬幫助克雷斯把汽車?yán)搅诵℃?zhèn)上。 事后,當(dāng)感激不盡的克雷斯拿出不菲的美鈔對(duì)他表示酬謝時(shí),這位男子說:“這不需要回報(bào),但我要你給我一個(gè)承諾,當(dāng)別人有困難的時(shí)候,你也要盡力幫助他人。”于是,在后來的日子里,克雷斯主動(dòng)幫助了許許多多的人,并且每次都沒有忘記轉(zhuǎn)述那句同樣的話給所有被他幫助的人。 許多年后的一天,克雷斯被突然暴發(fā)的洪水困在了一個(gè)孤島上,一位勇敢的少年冒著被洪水吞噬的危險(xiǎn)救了他。當(dāng)他感謝少年的時(shí)候,少年竟然也說出了那句克雷斯曾說過無數(shù)次的話:“這不需要回報(bào),但我要你給我一個(gè)承諾……” 克雷斯的胸中頓時(shí)涌起了一股暖暖的激流:“原來,我穿起的這根關(guān)于愛的鏈條,周轉(zhuǎn)了無數(shù)的人,最后經(jīng)過少年還給了我,我一生做的這些好事,全都是為我自己做的!”  當(dāng)您有幸看到此消息時(shí),請(qǐng)轉(zhuǎn)發(fā)給自己的朋友親人。我相信有更多的人需要我們的幫助, 正義會(huì)傳染 邪惡也是如此, 為現(xiàn)在的別人做善事也是為了將來的自己。
          傳遞溫暖,拒絕冷漠。
            1、如果錢還寬裕,別養(yǎng)二奶,偷偷養(yǎng)幾個(gè)貧困山區(qū)的學(xué)生,你心里一定會(huì)覺得舒坦;
            2、遇到夜里擺地?cái)偟模苜I就多買一些,別還價(jià),東西都不貴。家境哪怕好一點(diǎn),誰會(huì)大冷天夜里擺地?cái)偅?br />    遇到學(xué)生出來勤工儉學(xué)的,特別是中學(xué)生、小姑娘,她賣什么你就買點(diǎn)。如果她不是家庭困難,出來打工也需要勇氣的,鼓勵(lì)鼓勵(lì)她吧;   
            3、撿到錢包就找找失主。如果你實(shí)在缺錢就把現(xiàn)金留下,打電話告訴失主就說你在廁所里撿到的。把信用卡、身份證、駕駛執(zhí)照還給人家,一般別人也不會(huì)在乎錢了。把人家的地址記在你的筆記本上,以后發(fā)達(dá)了去找人家道個(gè)歉,把錢還給人家;   
            4、遇到問路的,碰巧你又知道那個(gè)地址,就主動(dòng)告訴一聲。別不好意思,沒有人笑話你;    
            5、如果丟的垃圾里有碎玻璃、大頭針、刀片等,請(qǐng)用膠帶把它們纏裹一下,并盡量多纏幾層。這樣就降低了保潔人員或者撿垃圾者被傷害的概率。他們大都是沒有醫(yī)保的弱勢(shì)群體,體貼體貼他們吧,好人會(huì)有好報(bào)的。
            6、遇到迷路的小孩和老頭老太,能送回家送回家,不能送回家的送上車、送到派出所也行。替老人或小孩打個(gè)電話再走,反正你也不缺那兩個(gè)電話費(fèi);    
            7、雨雪的時(shí)候、天冷的傍晚,遇到賣菜的、賣水果的,剩的不多了又不能回家,能全買就全買,不能全買就買一份,反正吃什么也是吃,買下來讓人早點(diǎn)回家;   
            8、上車遇到老弱病人、孕婦,讓座的時(shí)候別動(dòng)聲色,也別大張旗鼓。站起來用身體擋住其他人,留出空位子給需要的人,然后裝作下車走遠(yuǎn)點(diǎn)。人太多實(shí)在走不遠(yuǎn),人家向你表示謝意的時(shí)候微笑一下;   
            9、不要對(duì)有精神信念的人用猥褻言詞,要知道中國人缺就缺在沒有信仰。這世界什么都在變,什么都不可全信,唯有信念不變、不動(dòng)、永恒;   
            10、如果您的時(shí)間還寬裕,把這幾句話轉(zhuǎn)幾個(gè)群,網(wǎng)上很多人看,轉(zhuǎn)了心里舒坦。
            11、一般情況,看完這段文章而且主動(dòng)到各個(gè)群里轉(zhuǎn)發(fā)的人,都還是遺留著傳統(tǒng)美德的中國好人
          posted @ 2012-06-27 23:08 iLinux 閱讀(252) | 評(píng)論 (0)編輯 收藏

          在文章http://www.aygfsteel.com/aoxj/archive/2012/06/16/380926.html中,看到案例,++符號(hào)并不是原子操作,
          posted @ 2012-06-27 23:08 iLinux 閱讀(231) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 松原市| 平武县| 宝应县| 宁津县| 科技| 射阳县| 万源市| 连山| 鄂托克旗| 来凤县| 商洛市| 忻州市| 喀喇沁旗| 汕头市| 东兰县| 湘阴县| 东乡县| 昭觉县| 武夷山市| 明光市| 兖州市| 龙州县| 常山县| 城步| 鲁山县| 清远市| 邛崃市| 开封市| 大厂| 新化县| 平凉市| 贺州市| 河东区| 潮州市| 吉木乃县| 东至县| 潜江市| 南华县| 定兴县| 平阳县| 临泉县|