1. 程式人生 > >JavaSE學習之集合類的總結

JavaSE學習之集合類的總結

在這裡插入圖片描述
集合類分成Collection與map兩個大類,Collection介面下的子類中存的都是單個的元素,Map介面下的子類儲存的所有元素都是以鍵值對的形式儲存的。
——————————————————————————————————————————
Collection介面

  • Set介面(不能儲存重複的元素)
    a:HashSet,用雜湊表結構儲存資料,儲存的方式的無序的
    b:LinkedHashSet,用雜湊表與連結串列結合的方式儲存資料,有序的儲存
    c:TreeSet,將儲存的元素按照自然順序排序儲存
  • List介面(可以儲存重複的元素)
    a:ArrayList,以陣列形式儲存資料,查詢快增刪慢
    b:LinkedList,以連結串列形式儲存資料,查詢慢增刪快
    c:Vector,陣列結構。執行緒安全的

Map介面

  • HashMap 儲存結構為雜湊表結構,元素儲存是無序的
  • LinkedHashMap 是HashMap的子類,採用雜湊表+連結串列的結構儲存,保證元素儲存的順序一致。
    ——————————————————————————————————
    對於用雜湊表結構參與儲存的結構,如:
    HashSet,HashMap,LinkedHashSet,LinkedHashMap等,都是需要考慮重寫hashcode與equals方法來判斷是否包含重複的值(對於Map,則是保證鍵不重複),對於儲存的元素型別是自定義的型別,需要重寫hashcode()和equals()方法。
    先判斷hashcode()值是否相同,若不同,則不是同一元素,可以儲存;若相同,繼續比較equals方法,若返回true,則為相同元素,若為false,則不同可以儲存。

對ArrayList集合,其有contains方法驗證是否包含相同的元素,對儲存自定義的型別,同樣需要重寫equals方法,否則比較的為地址值。

——————————————————————————————————
關於Map的遍歷問題

  • 第一種方式:通過生成Entry鍵值對,利用entrySet得到set集合,再利用迭代器,通過遍歷迭代器,得到每一個鍵值對物件,在對每一個物件取鍵和值

     Map<Integer,String> map=new HashMap<>();
     map.put(1,"Java");
    map.put(2,"love");
     map.put(3,"bigdata");
     Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
     Iterator<Map.Entry<Integer, String>> iterator = entrySet.iterator();
     while (iterator.hasNext()){
         Map.Entry<Integer, String> entry=iterator.next();
         Integer key = entry.getKey();
         String value = entry.getValue();
         System.out.print(key+":"+value);
     }
    
  • 第二種:通過KeySet得到所有鍵的set集合,用迭代器取出每一個鍵的值,然後根據鍵找到值

   Map<Integer,String> map=new HashMap<>();
        map.put(1,"Java");
       map.put(2,"love");
        map.put(3,"bigdata");
        Set<Integer> keySet = map.keySet();
        Iterator<Integer> iterator = keySet.iterator();
        while (iterator.hasNext()){
            Integer key = iterator.next();
            String value = map.get(key);
            System.out.print(key+": "+value);
        }

相關推薦

JavaSE學習集合總結

集合類分成Collection與map兩個大類,Collection介面下的子類中存的都是單個的元素,Map介面下的子類儲存的所有元素都是以鍵值對的形式儲存的。 —————————————————————————————————————————— Collec

Java集合總結詳解

本文主要關注Java程式設計中涉及到的各種集合類,以及它們的使用場景。 1. Java集合類基本概念 在程式設計中,常常需要集中存放多個數據。從傳統意義上講,陣列是我們的一個很好的選擇,前提是我們事先已經明確知道我們將要儲存的物件的數量。一旦在陣列初始化時指定了這個陣列長度,這個陣列長度就是

guava學習——集合建立的簡化。

   在專案中,集合類的使用非常普遍。經常需要建立很多的集合類。使用guava可以簡化我們的程式碼,不但可以使程式碼看起來更加簡潔,而且更加優雅。   比如:   使用java原生建立一個HashM

springmvc學習筆記(13)-springmvc註解開發集合型參數綁定

return 可擴展性 list .net items trac class javascrip lin springmvc學習筆記(13)-springmvc註解開發之集合類型參數綁定

Redis學習set總結

內容 類型 字符集 members 無序 card 操作 div redis set類型看作沒有排序的字符集合。註意:如果多次添加相同元素,set將保留該元素的一份拷貝 常用的操作如下 一、增 127.0.0.1:6379> SADD myset b c d /

Java應用程式開發學習集合ArrayList的使用方法

在原來文章介紹了有關Java程式開發的詳細步驟: https://blog.csdn.net/morixinguan/article/details/84956938     這節,來介紹下集合ArrayList的使用方法,回到上一篇文章的,我們一樣跟著腳步來學習使用

JavaSE學習過程中問題總結 —— 集合框架、IO流、多執行緒等

回顧完基本概念和一些常用類,進入重點:(內容很多但沒有分文章寫,主要是自己的知識鞏固和做下筆記,不夠負責任,算不上知識分享)一、集合框架1、集合引入(1)物件陣列的概念:將多個類物件存放為陣列特點:長度固定,不適應變化的需求。(2)面向物件強調的是物件,需要容器來進行儲存和操

javaSE高階開發集合——棧與佇列

一、棧 package com.wschase.hashmap; import java.util.Stack; /** * Author:WSChase * Created:2019/1/7 */ ////一、棧--》先進後出 // //在生活中有很多這樣的例子,就是先

Java學習集合2

取出 手寫 string mov 利用 system 映射 獲取 和equal Set HashSet 特點:元素唯一,但是無序。 如何保證元素的唯一性的呢(分析源碼)?  通過簡單的分析,我們知道HashSet集合保證元素的唯一性和add()方法相關。  如何我們想深

Java集合總結

tree dex trac emp oat err 條件 最終 一個地方 集合類和接口之間的關系圖,能夠比較清楚的展示各個類和接口之間的關系(其中:點框為接口(...) 短橫線框為抽象類(---) 實線為類) 上圖可以看到:集合可以分成兩部分來學習。一個是以Colle

Java學習抽象

進行 java 創建對象 抽象類 ava abs 函數 創建 bsp java抽象類的使用 當多個類中出現相同功能,但是功能主體不同,這是可以進行向上抽取。這時,只抽取功能定義,而不抽取功能主體。抽象:看不懂。抽象類的特點:1,抽象方法一定在抽象類中。2,抽象方法和抽象類都

Java學習集合框架的叠代器--Iteratorjk及ListItertor接口

fault 之前 pre padding 指定 pan 存在 當前 iou   通常情況下,你會希望遍歷一個集合中的元素。例如,顯示集合中的每個元素。一般遍歷數組都是采用for循環或者增強for,這兩個方法也可以用在集合框架,但是還有一種方法是采用叠代器遍歷集合框架,它是一

JS學習路系列總結四象陣(此文猶如武林之中的易筋經,是你馳騁IT界的武功心法,學會JS五大陣法就學會了JS,博主建議先學三才陣)

元素 ins dom 命名 aslist element 多個 及其 nod 四象陣法: 增加 刪除 改變 查找 【為了便於記憶,減少占用大腦內存,我命名為JS心法為:道陣法,兩儀陣法,三才陣法,四象陣法,五行陣法,只需記住陣法的關鍵字,即可搜索大腦中相應的內容,學

jvm系列學習--Java的初始化順序

parent main方法 println () 類成員 -- sys div 開始 本文主要演示Java類的初始化順序 初始化順序 對於靜態變量、靜態初始化塊、變量、初始化塊、構造器,它們的初始化順序依次是(靜態變量、靜態初始化塊)>(變量、初始化塊)>構造器

無監督學習2——DBSCAN

odi alt times 指標 pyplot shape otl 明顯 score 根據學生月上網時間數據運用DBSCAN算法計算: #coding=utf-8 import numpy as np import sklearn.cluster as skc from

201671010127 2016-2017-12 泛型程序設計集合

obj import .cn tsa vector 變量名 dog src ceo   在第十周的程序測試題中,有一個程序在運行時發生了異常,當時老師留下該問題讓同學們自己查資料解決,我通過分析代碼和查閱資料後找到了該類問題的解決方法,接下來就和大家分享我的經歷。首先我先給

oracle學習集合運算和數據處理

使用 表頭 spa 回滾 dml語句 evo 樣式 sum 設置 集合運算主要有三種方式: 並集,union 兩個集合相同的部份只保留一份,不同部份全部保留    union all 兩個集合全部保留 交集,intersect 兩個集合保留相同的部份 差集,minus A

c#中常用集合集合接口集合系列【轉】

arr 關聯 special rect 替代 不能 一個數 lock resize 常用集合接口系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html 常用集合類系列:http://www.cnblogs.com/fengx

java學習集合家族2

技術分享 nat pub 修改 指定元素 post linked 特點 empty 集合體系 一.數據結構 List集合儲存數據結構     <1>堆棧結構       特點:先進後出            <2>隊列結構      

Android 音視頻深入 七 學習路的總結和資料分享

ofo 深入 format form ack rac 相關 rec for 說個實話一開始我對基於Android如何開發音視頻很迷茫,甚至對音視頻開發都不是很明白,我看了Android 音視頻開發入門指南 http://blog.51cto.com/ticktick/195