1. 程式人生 > >Java面試題-JavaSE基礎2

Java面試題-JavaSE基礎2

  • List 和 Map、Set 的區別
    2.1 結構特點
    List 和 Set 是儲存單列資料的集合,Map 是儲存鍵和值這樣的雙列資料的集合;List 中儲存的資料是有順序,並且允許重複;Map 中儲存的資料是沒有順序的,其鍵是不能重複的,它的值是可以有重複的,Set 中儲存的資料是無序的,且不允許有重複,但元素在集合中的位置由元素的 hashcode 決定,位置是固定的(Set 集合根據 hashcode 來進行資料的儲存,所以位置是固定的,但是位置不是使用者可以控制的,所以對於使用者來說 set 中的元素還是無序的;
    2.2 實現類
    List 介面有三個實現類(LinkedList:基於連結串列實現,連結串列記憶體是散亂的,每一個元素儲存本身記憶體地址的同時還儲存下一個元素的地址。連結串列增刪快,查詢慢;ArrayList:基於陣列實現,非執行緒安全的,效率高,便於索引,但不便於插入刪除;Vector:基於陣列實現,執行緒安全的,效率低)。
    Map 介面有三個實現類(HashMap:基於 hash 表的 Map 介面實現,非執行緒安全,高效,支援 null 值和 null鍵;HashTable:執行緒安全,低效,不支援 null 值和 null 鍵;LinkedHashMap:是 HashMap 的一個子類,儲存了記錄的插入順序;SortMap 介面:TreeMap,能夠把它儲存的記錄根據鍵排序,預設是鍵值的升序排序)。
    Set 介面有兩個實現類(HashSet:底層是由 HashMap 實現,不允許集合中有重複的值,使用該方式時需要重寫 equals()和 hashCode()方法;LinkedHashSet:繼承與 HashSet,同時又基於 LinkedHashMap 來進行實現,底層使用的是 LinkedHashMp)。
    2.3 區別

    List 集合中物件按照索引位置排序,可以有重複物件,允許按照物件在集合中的索引位置檢索物件,例如通過list.get(i)方法來獲取集合中的元素;Map 中的每一個元素包含一個鍵和一個值,成對出現,鍵物件不可以重複,值物件可以重複;Set 集合中的物件不按照特定的方式排序,並且沒有重複物件,但它的實現類能對集合中的物件按照特定的方式排序,例如 TreeSet 類,可以按照預設順序,也可以通過實現 Java.util.Comparator介面來自定義排序方式。
  • 相關推薦

    Java試題-JavaSE基礎2

    List 和 Map、Set 的區別 2.1 結構特點 List 和 Set 是儲存單列資料的集合,Map 是儲存鍵和值這樣的雙列資料的集合;List 中儲存的資料是有順序,並且允許重複;Map 中儲存的資料是沒有順序的,其鍵是不能重複的,它的值是可以有重複的,Set 中儲存的資料是無序的,且不允許有重複,但

    JAVA試題整理-基礎

    catch inflate 線程 cat serializa table lca sort str 1、List 和 Set 的區別 共同點:它們都是Collection的子接口 區別: List:這個接口能夠精準的記錄每一個元素的插入位置(換句話說就是這個接口內容所

    初級Java試題 - JavaSE

    builder jvm 餓漢 shang 對象 java面試題 設計模式 spa 垃圾 p { font-size: 18px } li { font-size: 18px } 加入我的QQ群(701974765) 獲取更多好用又好玩的軟件,還有不定期發放的福利呦(~

    Java試題基礎篇)

      Java三個平臺 Java基本資料型別 介面和抽象類區別?為什麼用介面? Java是單繼承還是多繼承? 所有類的基類是?Java.Lang.object  object裡的方法? 說你下你用過哪些介面?類?抽象類? 重寫override 和過載ov

    JAVA面試】java試題整理(2

                                               java面試題整理(2) JAVA常考點總結2 目錄 1、

    Java試題全集(2

    這部分主要是與Java Web和Web Service相關的面試題。96、闡述Servlet和CGI的區別? 答:Servlet與CGI的區別在於Servlet處於伺服器程序中,它通過多執行緒方式執行其service()方法,一個例項可以服務於多個請求,並且其例項一般不會銷燬

    JAVA試題總結【2

    一、基礎知識: 1、JVM、JRE和JDK的區別:    JVM(Java Virtual Machine):java虛擬機器,用於保證java的跨平臺的特性。              ja

    黑馬程式設計師——java試題基礎語法

    型別轉化 float f1 = (float)12.345; float f2 = 12.345f; f1其實是通過一個double型別轉換過來的。 而f2本身就是一個flo

    java試題-java基礎

    runtime 都是 缺點 子類 true 大數 virtual 過程 面向連接 1.1java與其他語言相比,有什麽優點和缺點?   首先,java與c、c++相比,java是一種完全的面對對象的語言,雖然他的底層(運行時庫)使用c語言開發的,可是並不依賴於c,因為jav

    java試題2

    pan ole light [0 -i att turn mat [] 1.冒泡排序 public static void test(){ int[] array = new int[]{1,4,5,8,9,34,4,32,65}; int tmp; for(

    Java試題-基礎篇四

    規範 error 一行代碼 不必要 表達 loading 需求 exception 引用 31、String s = new String("xyz");創建了幾個StringObject?是否可以繼承String類? 兩個或一個都有可能,”xyz”

    [ 轉載 ] [Java經]幹貨整理, Java試題(覆蓋Java基礎,Java高級,JavaEE,數據庫,設計模式等)

    post font www 數據庫 .com logs pan targe -m http://www.cnblogs.com/wang-meng/p/5898837.html[ 轉載 ] [Java面經]幹貨整理, Java面試題(覆蓋Java基礎,Java高級,Jav

    java試題整理2

    不可 版本 服務器端 線程 返回 結構 HA 性能調優 CP 一篇 1.Mybatis和hibernate分頁取數實現,一次性取數? Mybatis分為:內存分頁(假分頁)通過遊標截取; 物理分頁; MySQL

    Java試題Java基礎

    formate spa 多重繼承 輸出 不能 類名 gre collect extend 1、作用域public,private,protected,以及不寫時的區別 答:區別如下: 作用域 當前類 同一package 子孫類

    2018年最新JAVA試題總結之基礎(1)

    轉自於:https://zhuanlan.zhihu.com/p/39322967   1、JAVA中能建立volatile陣列嗎?volatile能使得一個非原子操作變成原子操作嗎? 回答: 能,Java 中可以建立 volatile 型別陣列,不過只是一個指向陣列的引用,而不是整個陣列。J

    試題Java試題--基礎總結--個人學習記錄

    1、Java執行緒的狀態 新建new:新建立一個執行緒物件。 就緒runnable:建立執行緒物件後呼叫start方法,此時執行緒進入可執行狀態,等待CPU的時間片,且其他所需資源已獲得。 執行running(一般不考慮這種狀態):執行緒分得CPU的時間片、資源後執行執行緒。 阻塞b

    Java試題02_15(第一階段基礎

    02.15_Java語言基礎(面試題之變數相加和常量相加的區別)(掌握) 面試題:看下面的程式是否有問題,如果有問題,請指出並說明理由。 * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 + b2; //有問題 * 從兩方面去回答這個題 *

    Java試題2

    Java面試題(1)見:https://blog.csdn.net/Number_oneEngineer/article/details/83412521 相關概念 面向物件的三個特徵 封裝,繼承,多型,這個應該是人人皆知,有時候也會加上抽象。 多型的好處 允許不同類物件

    java試題——java基礎(四)

    table 生命 運行 漸變 於平 單獨使用 標記語言 prepare 新建 java基礎1.java跨平臺  由於各個操作系統的指令不完全一樣,在不同的操作系統執行不同的程序代碼,java開發了java虛擬機來屏蔽系統之間的差異,針對不同的系統安裝不同的虛擬機即可。2.i

    超詳細的Java試題總結(二)之Java基礎知識篇

    多執行緒和Java虛擬機器 建立執行緒有幾種不同的方式?你喜歡哪一種?為什麼? 繼承Thread類 實現Runnable介面 應用程式可以使用Executor框架來建立執行緒池 實現Callable介面。 我更喜歡實現Runnable介面這種方法,當然這也是現