集合(泛型补充,迭代器,Map)(二):

集合(二):

一.泛型:

说明:(数据类型参数化)为数据类型的一个占位符(形式参数),即告诉编译器,在调用泛型时必须传入实际类型。

范式:集合类型<泛型类型>集合类型=new 集合类型<泛型类型>。

泛型类型必须是应用数据类型(包装类)。

包装类

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

二.HashMap:(接口实现类,不同步,不·安全)

​ 创建 hashMap 的范式:HashMap<键约束,值约束> map = new HashMap<键约束,值约束>();

方法:
1. put() 需要一组键值参数,起到添加和修改的作用。
2. get() 需要一个键参数,作用是获取对应的值
3. remove() 需要一个键参数,作用是删除当前键值对(不在集合上直接使用该方法,否则会报错)

遍历map集合的方法:

  1. keySet () 将map集合的所有 ” 键 “ 组成一个 Set 集合,通过遍历Set 集合使用 get()获取对应值
  2. valus() 将map集合的所有 “ 值 ” 组成一个Collection 集合,通过遍历Collection 集合使用具体值
  3. entrySet() 将map集合中的所有 “ 键 - 值对 ” 组成一个 Set 集合,通过遍历Set 集合,操作每一个 Entry 对象,使用 getKey() \ getValue() 获取键值数据

三.迭代器Iterator:

集合获取迭代器的范式:(map没有迭代器)

​ Iterator it = 集合名称.iterator()

迭代器中的数据相当复制一份原集合,创建后自带 “ 游标 ” ,通过游标的 hasNext() \ next()操作迭代器

Iterator it = 集合名称.iterator();
while(it.hasNext()){
    Object obj = it.next();
}

四.例子:

package wordcount;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

/**
编写程序,使用 map 集合的键值对统计 “asdkljflasdjfl”
 字符串中各字符出现的次数,键表示出现的单个字符,值表示该字符出现的次数
	最终结果输出类似于:a(5次)、b(1次)

	提示,使用字符串的 toCharArray() 方法,将字符串转为一个 char 类型数组
 */
public class WordCount {
    public static void main(String[] args) {
        String world="asdkljflasdjfl";//字符串变量
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();//hashMap实例化
        char[] array = world.toCharArray();// 把字符串转化为数组
//        for (char a:array) {//遍历数组
//            if (map.containsKey( a )){//判断HashMap中是否//包含数组元素
//                Integer integer = map.get( a );//获取value
//                map.put( a,integer+1 );//有的话加1
//            }else {
//                map.put( a,1 );//没有则把value写死
//            }
//        }
        for (char a:array) {
            map.put( a, map.containsKey( a )?map.get( a )+1:1);//与上差不错
        }

        Set<Character> set = map.keySet();//使用迭代器的前提

        Iterator<Character> iterator = set.iterator();

        while (iterator.hasNext()){//判断下个游标是否为空
            Character next = iterator.next();//取出key
            Integer integer = map.get( next );//通过key获取valu
            System.out.println(next+"("+integer+"次)");
        }
    }
}

五.底层扩展
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值