目录
一、map集合的特点
1.map集合的特点:键值对
二、遍历
拿到key,再拿值, 拿到映射关系:键值都有了
//2.拿到映射关系
Set<Entry<String, Integer>> entrySet = map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
System.out.println("键:"+entry.getKey()+ "值"+entry.getValue());
}
三、字符串出现的次数
代码如下:
package com.shishirong.map;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
/**
*
* @author Administrator
*
*/
public class Demo2 {
public static void main(String[] args) {
String s = "alkjdlkasjdlkjsalkdjsalkjdlksajdlkjsadlalkjdsalkjsadlksajdlk";
/**
* 实现思路:
* 1.做字符串切割,得到一个字符数组
* 2.接下来遍历,拿到单个字符
* 3.如果该字符没有出现过 即value值为null 那么该字符为key,值初始化为1
* 4.如果已经出现过,拿到原来的值+1
*
* debugger的使用 调试代码
* 1.打断点
* 2.采用debug的方式运行程序
* 3.进入调试窗口,左上方有一个step over调试箭头,快捷键F6
* 4.接下来可以通过F6一步步调试当前程序对应的每一个变量值
*
* 按照次数排序输出
*/
char[] arr = s.toCharArray();
Map<Character, Integer> map = new TreeMap<>();
for (char c : arr) {
Integer value = map.get(c);
if(value == null) {
map.put(c, 1);
}
else {
map.put(c, value+1);
}
// System.out.println(value);
}
Set<Entry<Character, Integer>> entrySet = map.entrySet();
// list, (x,y) -> x.getName().compareTo(y.getName())
for (Entry<Character, Integer> entry : entrySet) {
// System.out.println(entry.getValue());
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
运行结果如下:
四、泛型
泛型出现之前:不健壮代码,会在运行时才会把错误暴露出来
泛型出现之后:将潜在的问题暴露出来 早预防早治疗 它会将运行期出现的异常转换为编译期的错误
案列:没有加泛型时
它这里增加一个String类型是可以通过编译期的
但不能通过运行期
结果如下:
接下来就是增加泛型时
它会直接在你编译期的时候就提示你这里不能这样写
五、集合之间的相互转换
1.数组转成集合,本质上依然是一个数组,长度是不可变的
2.集合与数组所具备的方法是不一样的,如对于数组而言,就没有判断内部包含那个元素
public class Demo4 {
public static void main(String[] args) {
String[] arr = {"a","b","c","d","e"};
List<String> list = Arrays.asList(arr);
// Object[] array = list.toArray();
list.add("f");
// java.lang.UnsupportedOperationException
System.out.println(list.size());
}
}
他这里会运行报错,原因就是数组转成集合,它本质上还是一个数组,它的长度是不可变的
六、工具类
对于工具类其他方法的应用
sort
tostring
package com.shishirong.map;
import java.util.ArrayList;
import java.util.Arrays;
public class Demo5 {
public static void main(String[] args) {
// java.util.List<String> list = new ArrayList<>();
// list.add("b");
// list.add("c");
// list.add("a");
// System.out.println(list);
// java.util.Collections.sort(list);
// System.out.println(list);
// //这里面的x,y指的是集合中的元素
// java.util.Collections.sort(list, (x,y) -> y.compareTo(x));
// System.out.println(list);
java.util.List<Person> list = new ArrayList<>();
list.add(new Person("b", 16));
list.add(new Person("c", 18));
list.add(new Person("a", 19));
System.out.println(list);
// java.util.Collections.sort(list);
java.util.Collections.sort(list, (x,y) -> x.getName().compareTo(y.getName()));
System.out.println(list);
Integer[] arr = {3,5,4,1,6,8};
Arrays.sort(arr, (x,y) -> y - x);
System.out.println(Arrays.toString(arr));
}
}
class Person implements Comparable<Person>{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Person o) {
return o.getName().compareTo(this.name);
}
}
这里需要大家运行代码自行理解为上策