集合
HashMap集合簡介
概述
1. 表示雙列集合,鍵具有唯一性,值是可以重複的。生活中我們用過詞典,詞典通過目錄索引可以找到對應的單詞。在Java裏面的HashMap就類似於詞典中的目錄索引。
2. HashMap裏邊用key/value(鍵值對)存儲數據,key就是鍵,value就是值。
HashMap的初始化
例: HashMap<String,Integer> map = new HashMap<>();
Java中,集合的前後<>號中的泛型必須一致,或者後邊<>號中的泛型可以省略不寫
這是JDK1.7的新特性,菱形泛型
泛型
常用數據類型及其包裝類(引用類型)
概述
泛指某種特定的數據類型, 表示形式爲: <>
大白話: 泛型就是用來確定, 集合中將要添加什麼類型的數據.
好處:提高代碼安全性
注意點:
1. 泛型只能是引用數據類型
2. 泛型一般只和集合結合使用
包裝類
概述:其實就是基本數據對應的引用數據類型。
各基本數據類型對應的包裝類:
基本數據類型 | 引用數據類型(包裝類) |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | float |
double | Double |
boolean | Boolean |
自動拆裝箱(JDK1.5的新特性)
自動裝箱: 就是把基本類型的數據轉成對應的引用數據類型.
* Integer i = 10;
自動拆箱: 就是把引用類型的數據轉成對應的基本數據類型.
* Integer i = 10;
* int a = i;
HashMap集合常用方法總結
put()
;往集合中添加元素.
如果是第一次添加就返回null, 如果是重複添加會用新值來覆蓋舊值,並返回舊值.
remove()
; 根據鍵刪除該鍵值對.
如果鍵存在,就返回刪除之前的值, 如果鍵不存在,返回null.
get()
;根據鍵獲取對應的值,如果鍵不存在, 返回null。
size()
;獲取集合的長度(這裏的長度指的是 鍵值對對象的 個數)
isEmpty()
; 判斷集合是否爲空
containsKey()
;判斷集合是否包含給定的鍵
containsValue()
;判斷集合是否包含給定的值
clear()
; 清空集合中的元素
雙列集合的遍歷方式
第一種:根據鍵獲取值
1. 獲取到所有鍵的集合
2. 遍歷,獲取到每個鍵。
3. 根據鍵獲取值。
示例代碼:
public class Test{
public static void main(String[] args){
HashMap<String,Interger> hm = new HashMap<>();//菱形泛型
hm.put("張三",22);
hm.put("李四",23);
hm,put("wangwu",25);
//遍歷雙列集合
for(String key:hm.keySet()){
System.out.println(key+"----->"+hm.getValue(key));
}
}
}
第二種:直接遍歷集合
示例代碼:
public class Test{
public static void main(String[] args){
HashMap<String,Interger> hm = new HashMap<>();//菱形泛型
hm.put("張三",22);
hm.put("李四",23);
hm,put("wangwu",25);
//遍歷雙列集合
for(Entry<String, Integer> map: hm.entrySet()){
System.out.print(map.getKey()+"------>"+map.getValue());
}
}
}
ArrayList集合簡介
一般我們在存放一組相同數據類型的數據時,就用數組,可是在很多時候我們不知道到底有多少數據需要存儲,這時候我們就可以使用到集合,但是對於雙列集合而言,我們不知道key就很難把數據取出來,所以就用到了ArrayList。
ArrayList的初始化
例: ArrayList list = new ArrayList<>();
與HashMap的初始化是一樣的。
ArrayList中的常用方法:
add()
往集合中添加元素
get()
根據索引, 獲取對應的元素.
如果索引不存在,會報索引越界異常: IndexOutOfBoundsException
set()
根據給定的索引和元素, 修改對應位置的值.如果索引不存在,會報索引越界異常:IndexOutOfBoundsException
remove()
根據索引移除對應的元素.
索引不存在會報索引越界異常:IndexOutOfBoundsException
集合和數組的相互轉換
集合轉數組:
Arrays#toArray()
把集合對象轉換成對應的數組形式。
數組轉集合:
Arrays#asList()
把數組對象轉換成其對應的集合形式。
如果是基本類型的數組轉成集合,是把整個數組對象當作集合中的一個元素來轉的,而且在數組轉成集合後不能向集合中增加或者刪除元素,但是可以修改元素。
相關面試題
一.數組與集合的區別是什麼?
1.長度不同
(1)數組的長度是固定的。
(2)集合的長度是可變的。
2.存儲的數據元素類型不同
(1)數組:既可以存基本數據類型 ,也可以存放引用數據類型。
(2)集合:只能存儲引用數據類型。