v
HashMap储存数据的特点:
- 1.底层以哈希表的结构进行储存数据
- 2.HashMap是以key(键)/value(值)方式进行元素储存的
- 3.HashMap中的key必须唯一,value可以重复
- 4.HashMap中的key和value是一一对应的关系
- 5.HashMap储存的元素是无序的
HashMap中的常用方法:
- map.put(key,value);----添加一个元素,以键值对方式添加
- map.remove(key);----删除value值
- map.containsKey(key);----判断是否有查询的key
- map.containsValue(value);----判断是否有查询的value
- map.get(2);----根据key获取value值
- Set<?> s = map.keySet();----获取所有的key,封装到set集合里面
- Collection c = map.values();----获取所有的value值,封装到父类Collection集合里面
源码实例:
package HashMap;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* HashMap储存数据的特点:
* 1.底层以哈希表的结构进行储存数据
* 2.HashMap是以key(键)/value(值)方式进行元素储存的
* 3.HashMap中的key必须唯一,value可以重复
* 4.HashMap中的key和value是一一对应的关系
* 5.HashMap储存的元素是无序的
* @author Administrator
*
*/
public class TestHashMap {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<Integer,String>();
//添加元素,通过put(key,value)方法添加key,value
map.put(1, "蜘蛛侠");
map.put(2, "雷神");
map.put(3, "钢铁侠");
map.put(4, "美国队长");
map.put(5, "绿巨人");
System.out.println(map);
//判断是否有当前的key
//map.containsKey(key);
System.out.println(map.containsKey(1));
//判断是否有当前的value
//map.containsValue(value);
System.out.println(map.containsValue("钢铁侠"));
//删除value值
//map.remove(key);
map.remove(4);
//根据key获取value值
map.get(2);
System.out.println("---------获取所有的key值--------------------------------------------");
//获取所有的key,封装到set集合里面
Set<Integer> s = map.keySet();
Iterator<Integer> iter= s.iterator();
while(iter.hasNext()){
int i = iter.next();
System.out.println(i);
}
System.out.println("---------获取所有的key:value值--------------------------------------");
//根据key值获取value的值
Set<Integer> s2 = map.keySet();
Iterator<Integer> iter2= s2.iterator();
while(iter2.hasNext()){
int i = iter2.next();
System.out.println(i+":"+map.get(i));
}
System.out.println("---------获取所有的value值------------------------------------------");
//获取所有的value值,封装到父类Collection集合里面
Collection c = map.values();
Iterator<String> iter3 = c.iterator();
while(iter3.hasNext()){
String values = iter3.next();
System.out.println(values);
}
//findcount("holleworld",'l');
//findcount2("holleworld",'l');
findcounds("abaabb");
}
//定义一个字符串 统计某个字符在字符串中出现的次数
//String s = "helloworld" 统计l在helloworld中出现的次数
//实现思路分析:
//1.控制台输入一个字符串 输入一个字符
//2.考虑如何把字符串中的字符一个一个的提取出来 方便和查找的字符进行比较
//可以对字符串进行截取
//可以把字符串转换为字符数组
//3.通过循环遍历出字符串的单个字符和查找的字符进行比较
//4.如果字符串的某一个值和查找的字符相等 计算器++
public static void findcounds(String s){
char[] ch = s.toCharArray(); //把字符串转换成char类型的数字,利用toCharArray()方法进行转换
int count=0;//定义一个计数器
Map<Character,Integer> map = new HashMap<Character,Integer>(); //创建一个HashMap
for(int i=0;i<ch.length;i++){ //循环遍历数组
if(map.containsKey(ch[i])){ //判断数组中的字符再map中是否存在key值,如果有进行下面操作
count=map.get(ch[i]); //获取当前key值的value值(其实是获取的下一个元素,因为再数据结构的线性表中,头节点为null,下一个元素才是我们要获取的元素)
count++; //计数器进行++运算
map.put(ch[i],count); //map添加新的元素,应为key相同所以替换以前的value,实现更新value
}else{ //当字符在map的key值中第一次存在时。
count=1; //将计数器重新赋值为1
map.put(ch[i],count); //插入新的map元素
}
}
System.out.println(map); //打印map,map默认调用toString()方法
}
//定义一个字符串,统计某个字符在字符串中出现的次数
//方法一
public static void findcount(String s,char c){
int count = 0;
for(int i=0;i<s.length();i++){
char cs = s.substring(i,i+1).charAt(0);
if(cs==c){
count++;
}
}
System.out.println(c+"在"+s+"中出现过"+count+"次.");
}
//方法二
public static void findcount2(String s,char c){
int count = 0;
char[] ch = s.toCharArray();
for(char cs: ch){
if(cs==c){
count++;
}
}
System.out.println(c+"在"+s+"中出现过"+count+"次.");
}
}
//定义一个字符串 统计某个字符在字符串中出现的次数
//String s = "helloworld" 统计l在helloworld中出现的次数
//实现思路分析:
//1.控制台输入一个字符串 输入一个字符
//2.考虑如何把字符串中的字符一个一个的提取出来 方便和查找的字符进行比较
//可以对字符串进行截取
//可以把字符串转换为字符数组
//3.通过循环遍历出字符串的单个字符和查找的字符进行比较
//4.如果字符串的某一个值和查找的字符相等 计算器++
public static void findcounds(String s){
char[] ch = s.toCharArray(); //把字符串转换成char类型的数字,利用toCharArray()方法进行转换
int count=0;//定义一个计数器
Map<Character,Integer> map = new HashMap<Character,Integer>(); //创建一个HashMap
for(int i=0;i<ch.length;i++){ //循环遍历数组
if(map.containsKey(ch[i])){ //判断数组中的字符再map中是否存在key值,如果有进行下面操作
count=map.get(ch[i]); //获取当前key值的value值(其实是获取的下一个元素,因为再数据结构的线性表中,头节点为null,下一个元素才是我们要获取的元素)
count++; //计数器进行++运算
map.put(ch[i],count); //map添加新的元素,应为key相同所以替换以前的value,实现更新value
}else{ //当字符在map的key值中第一次存在时。
count=1; //将计数器重新赋值为1
map.put(ch[i],count); //插入新的map元素
}
}
System.out.println(map); //打印map,map默认调用toString()方法
}