Map概述
Map集合的常用方法
1.put
2.remove
3.get
4.containsKey
public class MapMethod {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
map.put("小新", 6);
map.put("妮妮", 5);
map.put("风间", 4);
System.out.println(map);
Integer rem = map.remove("妮妮");
System.out.println(rem);
System.out.println(map);
Integer getNum = map.get("小新");
System.out.println(getNum);
boolean isExist = map.containsKey("风间");
System.out.println(isExist);
}
}
Map集合遍历
键找值方式
public class MapMethod {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
map.put("小新", 6);
map.put("妮妮", 5);
map.put("风间", 4);
Set<String> keyColl = map.keySet();
Iterator<String> iterator = keyColl.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
Integer age = map.get(next);
System.out.println(next + "=" + age);
}
System.out.println("===========");
for (String s : map.keySet()) {
Integer age = map.get(s);
System.out.println(s + "=" + age);
}
}
}
entry键值对对象
public class MapMethod {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
map.put("小新", 6);
map.put("妮妮", 5);
map.put("风间", 4);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
while(iterator.hasNext()) {
Map.Entry<String, Integer> next = iterator.next();
String key = next.getKey();
Integer value = next.getValue();
System.out.println(key + "=" + value);
}
System.out.println("==============");
for (Map.Entry<String, Integer> entry : entries) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "=" + value);
}
}
}
HashMap存储自定义类型键值
public class HashMapClass {
public static void main(String[] args) {
HashMap<String, Person> newHash = new HashMap<>();
newHash.put("野原新之助",new Person("小新",6));
newHash.put("会玩扮家家酒",new Person("妮妮",5));
newHash.put("野原新之助",new Person("小时候",1));
Set<Map.Entry<String, Person>> entries = newHash.entrySet();
for (Map.Entry<String, Person> entry : entries) {
String key = entry.getKey();
Person value = entry.getValue();
System.out.println(key + "=" + value);
}
}
}
Hashtable集合
Map集合练习
计算一个字符串中每个字符出现次数
先自己试着做,用到scanner以及String的一些方法以及Map遍历的一种方法。
public class MapPratice {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String next = scn.next();
char[] chars = next.toCharArray();
HashMap<Character, Integer> newHash = new HashMap<>();
for (int i = 0; i < chars.length; i++) {
int count = 0;
for (int j = 0; j < chars.length; j++) {
if(chars[i] == chars[j]) {
count++;
}
}
newHash.put(chars[i],count);
}
Set<Map.Entry<Character, Integer>> entries = newHash.entrySet();
for (Map.Entry<Character, Integer> entry : entries) {
Character key = entry.getKey();
int value = entry.getValue();
System.out.println(key + "总共有" + value + "个。");
}
}
}
但是我觉得这很明显在嵌套for循环那里没那么易懂,看了老师的解法,觉得会简单很多
public class MapPractice02 {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String next = scn.next();
char[] chars = next.toCharArray();
HashMap<Character, Integer> newHash = new HashMap<>();
for (char c : chars) {
if(newHash.containsKey(c)) {
Integer value = newHash.get(c); //已存在的集合中的Key相应的calue
value++;
newHash.put(c,value); //让vaule加1并且覆盖原来的value值
}else {
newHash.put(c, 1); //当原集合中没有c时候,将value加1
}
}
Set<Map.Entry<Character, Integer>> entries = newHash.entrySet();
for (Map.Entry<Character, Integer> entry : entries) {
Character key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "总共有" + value + "个。");
}
}
}
对集合的优化_of方法(JDK9)
我的版本是jdk8,所以没法用,只能复制了