首先我们来知道一下今天的主要几个小知识点
一、map集合框架特点是什么?
Map是一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。在Map中键(key)可以使任意类型的对象。Map中不能有重复的键(Key),每个键(key)都有一个对应的值(value)。
一个键(key)和它对应的值构成map集合中的一个元素。
Map中的元素是两个对象,一个对象作为键,一个对象作为值。键不可以重复,但是值可以重复。
Map存储元素使用put方法,而Collection使用add方法
Map集合没有直接取出元素的方法,而是先转成Set集合。
案例
Map<String,Integer> map=new HashMap<>();
// V put(K key,V value);
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
System.out.println(map);
// 移除
Object remove = map.remove("b");
System.out.println(remove);
System.out.println(map);
//修改 也是调用put方法
map.put("c", 32);
System.out.println(map);
//查询
System.out.println(map.get("c"));
二、字符串出现的字符
①、实现思路:
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 HashMap<>();
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);
}
// map.entrySet().stream().sorted((x,y)->x.getValue()-y.getValue()).forEach(System.out::print);
Set<Entry<Character,Integer>> entrySet = map.entrySet();
for (Entry<Character, Integer> entry : entrySet) {
System.out.println(entry.getKey() + ":" +entry.getValue());
}
}
三、泛型
泛型
之前:不健壮 的代码、会在运行时才会把错误暴露出来
之后:将潜在的问题暴露出来、早预防早治疗
将运行期出现的异常转换为编译器的错误
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
set.add(5);
for (Object obj : set) {
if(Integer.valueOf(obj.toString())%2==0) {
System.out.println(obj);
}
// set.remove(obj);
}
}
}
class BookDao{
// add(BooK book);
// del(BooK book);
// edit(BooK book);
// list(BooK book);
}
class UserDao extends BaseDao{
}
class BaseDao<T>{
void add(T t){
}
void ael(T t){
}
void edit(T t){
}
List<T> list(T t){
return null;
}
}
class result{
<T>void del(T t) {
}
四,框架类工具包
①、集合之间的相互转换:
1、数组转成集合,本质上依然是一个数组、长度是不可变的
2、集合与数组所具备方法是不一样的、入对于数组而言、就没有判断内部包含哪个元素
代码展示:
public static void main(String[] args) {
String [] arr= {"a","b","c","d"};
List<String> list = Arrays.asList(arr);
// Object[] array = list.toArray();
// list.add("e");
// java.lang.UnsupportedOperationException
System.out.println(list.size());
}
②、 对于工具类其他方法的应用
sort
toString
代码展示:
public static void main(String[] args) {
// List<String> list = new ArrayList<>();
// list.add("b");
// list.add("c");
// list.add("a");
// System.out.println(list);
// Collections.sort(list);
// System.out.println(list);
// //这里面x、y值得是集合中的元素
// Collections.sort(list,(x,y) -> y.compareTo(x));
// System.out.println(list);
List<Person> list = new ArrayList<>();
list.add(new Person("b",16));
list.add(new Person("c",18));
list.add(new Person("b",19));
System.out.println(list);
// Collections.sort(list);
Collections.sort(list,(x,y) -> x.getName().compareTo(y.getName()));
System.out.println(list);
Integer[] arr = {3,6,9,2,5,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;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
// @Override
// public int compareTo(Person o) {
// // TODO Auto-generated method stub
// return o.getName().compareTo(this.name);
// }