本节知识梳理
目录
前言
前面介绍了list集合set集合,接下来我也会接着介绍集合框架中Map集合,我们一起来看一下吧!
一、特点
① 增删改查
②键值对形式存在
③ key可以为空
示例代码:
package com.xhy.map;
import java.util.HashMap;
import java.util.Map;
/**
* map集合的特点
* @author zjjt
*
*/
public class demo1 {
public static void main(String[] args) {
//①键值对形式
Map<String, Object> map=new HashMap<>();
//②增
map.put("a",1);
map.put("b",2);
map.put("c",3);
map.put("d",4);
System.out.println(map);
System.out.println("========================");
//③删
System.out.println(map.remove("b"));
System.out.println("=========================");
//④改(直接覆盖)
map.put("d", 5);
System.out.println(map);
System.out.println("==========================");
//⑤查
System.out.println(map.get("a"));
System.out.println("==========================");
//key可以为空
map.put(null, 111111);
System.out.println(map.get(null));
}
}
二、遍历方式
Map集合的存储方式图解:
1.entrySet
此映射中包含的映射关系的 Set 集合。将Map集合中的键和值映射关系打包成为一个对象存入Set集合
代码如下(示例):
①.先获取map集合映射关系
示例代码:
Set<Entry<String,Object>> entrySet = map.entrySet();
for (Entry<String, Object> e : entrySet) {
System.out.println(e);
}
输出结果:
2.keyset
将Map集合中所有的键存入到Set集合,再根据get()方法,获取每一个键对应的值(因为Set集合具备迭代器,所以也可以通过迭代方法取出所有的键,再根据get()方法,获取每一个键对应的值)
代码如下(示例):
Map<String, Object> map=new HashMap<>();
map.put("a",1);
map.put("b",2);
map.put("c",3);
//1.使用keySet()方法 转换成Set集合
System.out.println("--------------keySet()方法foreach遍历 ---------------");
//先获取map集合中所有key
Set<String> keys=map.keySet();
for(String key : keys) {
System.out.println("key:"+key+";value="+map.get(key));
}
System.out.println("--------------keySet()方法迭代器遍历 ---------------");
Set<String> keySet1 = map.keySet();
Iterator<String> iterator = keySet1.iterator();
while(iterator.hasNext()) {
String key=iterator.next();
Object value=map.get(key);
System.out.println("key:"+key+";value="+value);
}
输出结果:
三、常见实现类HashMap
Map集合下有hashMap和TreeMap(少用)
HashMap:同步既排队 安全的 键不可以为null,值也不可以为null
举例:统计字符串各个字母出现的次数
示例代码:
String s="sankjhaijnbsdbandvafdyiqwdabcxnmdssmanbscmba";
char[] chars = s.toCharArray();
Map<Character, Integer>map=new HashMap<Character, Integer>();
for (char c : chars) {
Integer num=map.get(c);
if(num==null || num==0) {
map.put(c, 1);
}else {
map.put(c, num+1);
}
}
Set<Entry<Character, Integer>> entrySet = map.entrySet();
for (Entry<Character, Integer> entry : entrySet) {
System.out.println(entry.getKey()+"出现了"+entry.getValue()+"次");
}
}
输出结果:
四、泛型
概念:
通常在写一个类,接口,方法,时会发生数据类型不正确或不确定时可以使用 <字母>来表示一个·不确定的数据类型
作用:①将运行时产生的异常转换为编译期的错误
②提高代码的健壮性
*目前认识泛型了解即可
①泛型类
class commomDao<T>{
public List<T> getAll(T a){
System.out.println("通用的查询方法......");
return null;
}
}
/**
* Book实体类
* @author T440s
*
*/
class Book{
private String name;
}
/**
* Order实体类
* @author T440s
*
*/
class Order{
private String name;
}
/**
* Bookdao实体类
* @author T440s
*
*/
class BookDao extends commomDao<Book>{
@Override
public List<Book> getAll(Book a) {
// TODO Auto-generated method stub
return super.getAll(a);
}
}
/**
* Orderdao实体类
* @author T440s
*
*/
class OrderDao extends commomDao<Order>{
@Override
public List<Order> getAll(Order a) {
// TODO Auto-generated method stub
return super.getAll(a);
}
}
②泛型方法:
public <T> List<T> getAll(T a){
System.out.println("通用的查询方法......");
return null;
}
五、集合框架工具类
1.Collections
//Collections排序
package com.xhy.list;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* list集合去重与去重对象equals方法有关
* @author zjjt
*
*/
public class Demo5 {
public static <Syudent> void main(String[] args) {
List<Student> list = new ArrayList<>();
list.add(new Student("xhy", 1000));
list.add(new Student("sjy", 3000));
list.add(new Student("ltf", 4000));
list.add(new Student("lsz", 10000));
//Collections类 实现排序
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
return o1.getMoney()-o2.getMoney();
}
});
for (Student student : list) {
System.out.println(student);
}
}
}
class Student{
private String name;
private int money;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
@Override
public String toString() {
return "Student [name=" + name + ", money=" + money + "]";
}
public Student(String name, int money) {
super();
this.name = name;
this.money = money;
}
public Student() {
// TODO Auto-generated constructor stub
}
}
输出结果:
2.Arrays常用方法
1.toString():将数组重的内容全部打印出来
2.sort():数组排序
3.asList():将数组转成集合(不能违背数组本身特点)
4.equals():比较数组元素是否相等
示例代码:
package com.xhy.map;
import java.util.Arrays;
import java.util.List;
public class demo6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] arr=new int [] {37,65,767,23,243,62,77,90};
int [] arr2=new int [] {767,23,243,62,77,90};
//打印
System.out.println(Arrays.toString(arr));
//将数组变成集合
List<int[]> as = Arrays.asList(arr);
//比较数组元素是否相等
boolean fool = Arrays.equals(arr, arr2);
//排序
Arrays.sort(arr);
}
}
输出结果: