先上思维导图,按顺序来:
一:Map集合的特点
①增删查改
②键值对形式存在
③key可以为空
论证代码如下:
二:Map集合的遍历方式
分为EntrySet和KeySet
三:常用实现类HashMap(统计字符串出现的次数)
思路:1.字符串转换成字符数组
2.遍历数组,将字符放入Map集合中
3.判断:如果字符没有,那么就给字符对应的值设置为1,如果有,就给对应的值+1
★★★四:泛型
①作用:
将运行时产生的异常转换为编译期的错误
提高代码的健壮性
比如:以下使用泛型编译的时候不会报错,但在你运行之后就会报String不能转换为Integer
(java.lang.String cannot be cast to java.lang.Integer)
那么在来对比下,如果把Object类型换为Integer类型那么在编译时就会告诉你报错了。
大概结构是这样,概念还有点模糊,还需要去深度拓展。可参考以下大神的(由以下链接进):
五:集合框架工具类
①:利用Collections( 比较器接口 )进行排序
list也能进行排序,只是是Comparator提供的
List<User> list=new ArrayList<>();
list.add(new User("张三",60));
list.add(new User("大五",59));
list.add(new User("王四",20));
list.add(new User("麻子",40));// 比较器接口 年龄从低到高进行排序
Collections.sort(list,new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
// TODO Auto-generated method stub
return o1.getAge()-o2.getAge();
}
});
for (Object s : list) {
System.out.println(s);
}
}
}
class User implements Comparable{
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;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
运行结果如下:
②:集合转数组(toArray)这个是list本身的,但在开发中运用较多的还是sort。toArray里的方法都挺多的
③:Arrays
★将数组变成集合来操作,不能违背数组本身的特点,比如,数组长度不可变,只能用list现有元素进行操作,把他变为list也不能添加东西。 集合的API要比数组的更丰富
①:toString
②:asList
③:sort