集合
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)集合:只能存储引用数据类型。