您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Java底層基于鏈表如何實現集合和映射的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在Java底層基于二叉搜索樹實現集合和映射中我們實現了底層基于二叉搜索樹的集合,本節就底層如何基于鏈表實現進行學習,注意:此處的鏈表是之前自己封裝的.
用于鏈表本身沒有去重的效果,因此我們在做基于鏈表的集合時,需要對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循環,定一個字符串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循環,定一個字符串word去遍歷words //底層的話會把ArrayList words1中的值一個一個的賦值給word for (String word : words2) set2.add(word);//不添加重復元素 System.out.println("Total different words : " + set2.getSize()); } }
結果:
這里需要說明一下就是關于我們統計的單詞數只考慮了每個單詞組成的不用,并沒有對單詞的特殊形式做區分。
1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應用程序;2. 面向對象;3. 分布性,Java是面向網絡的語言;4. 魯棒性,java提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。;5. 安全性,用于網絡、分布環境下的Java必須防止病毒的入侵。6. 體系結構中立,只要安裝了Java運行時系統,就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網絡上的不同機器。8.解釋執行,Java解釋器直接對Java字節碼進行解釋執行。
感謝各位的閱讀!關于“Java底層基于鏈表如何實現集合和映射”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。