您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Java底層基于鏈表如何實現(xiàn)集合和映射的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在Java底層基于二叉搜索樹實現(xiàn)集合和映射中我們實現(xiàn)了底層基于二叉搜索樹的集合,本節(jié)就底層如何基于鏈表實現(xiàn)進行學習,注意:此處的鏈表是之前自己封裝的.
用于鏈表本身沒有去重的效果,因此我們在做基于鏈表的集合時,需要對add()
方法做一下特殊處理,如下增加一個判斷即可。
@Override public void add(E e) { if (!list.contains(e)) { list.addFirst(e); } }
/** * 集合的接口 */ public interface Set<E> { void add(E e);//添加 <——<不能添加重復元素 void remove(E e);//移除 int getSize();//獲取大小 boolean isEmpty();//是否為空 boolean contains(E e);//是否包含元素 }
Set
public class LinkedListSet<E> implements Set<E> { private LinkedList<E> list; public LinkedListSet() { list = new LinkedList<E>(); } @Override public int getSize() { return list.getSize(); } @Override public boolean isEmpty() { return list.isEmpty(); } @Override public boolean contains(E e) { return list.contains(e); } @Override public void add(E e) { if (!list.contains(e)) { list.addFirst(e); } } @Override public void remove(E e) { list.removeElement(e); } }
import java.util.ArrayList; public class LinkedListSetTestDemo { public static void main(String[] args) { System.out.println("Pride and Prejudice"); //新建一個ArrayList存放單詞 ArrayList<String> words1 = new ArrayList<>(); //通過這個方法將書中所以單詞存入word1中 FileOperation.readFile("pride-and-prejudice.txt", words1); System.out.println("Total words : " + words1.size()); LinkedListSet<String> set1 = new LinkedListSet<>(); //增強for循環(huán),定一個字符串word去遍歷words //底層的話會把ArrayList words1中的值一個一個的賦值給word for (String word : words1) set1.add(word);//不添加重復元素 System.out.println("Total different words : " + set1.getSize()); System.out.println("-------------------"); System.out.println("Pride and Prejudice"); //新建一個ArrayList存放單詞 ArrayList<String> words2 = new ArrayList<>(); //通過這個方法將書中所以單詞存入word1中 FileOperation.readFile("a-tale-of-two-cities.txt", words2); System.out.println("Total words : " + words2.size()); LinkedListSet<String> set2 = new LinkedListSet<>(); //增強for循環(huán),定一個字符串word去遍歷words //底層的話會把ArrayList words1中的值一個一個的賦值給word for (String word : words2) set2.add(word);//不添加重復元素 System.out.println("Total different words : " + set2.getSize()); } }
結(jié)果:
這里需要說明一下就是關(guān)于我們統(tǒng)計的單詞數(shù)只考慮了每個單詞組成的不用,并沒有對單詞的特殊形式做區(qū)分。
1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應用程序;2. 面向?qū)ο螅?. 分布性,Java是面向網(wǎng)絡(luò)的語言;4. 魯棒性,java提供自動垃圾收集來進行內(nèi)存管理,防止程序員在管理內(nèi)存時容易產(chǎn)生的錯誤。;5. 安全性,用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須防止病毒的入侵。6. 體系結(jié)構(gòu)中立,只要安裝了Java運行時系統(tǒng),就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網(wǎng)絡(luò)上的不同機器。8.解釋執(zhí)行,Java解釋器直接對Java字節(jié)碼進行解釋執(zhí)行。
感謝各位的閱讀!關(guān)于“Java底層基于鏈表如何實現(xiàn)集合和映射”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。