一、学习图例
二、Map的增删改查及特点
特点:键值对形式存在(key可以为null)
package com.daihuimei.map;
import java.util.HashMap;
import java.util.Map;
/**
* map集合特点
* 键值对形式存在
* @author T440s
*
*/
public class DHM1 {
public static void main(String[] args) {
/**例:
* 同时展示用户信息,商品信息
* 1、req.setattribute("user",user);
* req.setattribute("goods",goods);
* ${user}
* 2、Map<String,Object> map=new HashMap<>();
* map.put("user",user);
* map.put("goods",goods);
* req.setattribute("map",map);
* ${map.user}
*
* key可以为空
*/
Map< String, Object> map=new HashMap<>();
//增
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
System.out.println(map);
//删
System.out.println(map.remove("a"));
System.out.println(map);
//改(覆盖)
map.put("c", 5);
System.out.println(map);
//map集合的查询功能
System.out.println(map.get("c"));
}}
三、Map的遍历方式
先获取Map集合中所有的Key
Set<String> keys=map.keySet();
for (String key : keys) {
System.out.println("key:"+key+";value:"+map.get(key));
}
先获取Map集合的映射关系
Set<Entry<String, Object>> entrySet=map.entrySet();
for (Entry<String, Object> entry : entrySet) {
System.out.println("key:"+entry.getKey()+";value:"+entry.getValue());
}
四、常用实现类HashMap
统计字符出现的次数(先理清思路)
/**如下:
* 统计字符串中字符出现的次数
* @author T440s
* 1 字符串转换成字符数组
* 2 遍历数组,将字符放入Map集合中
* 3 判断:如果字符没有就给字符对应的值设置为1
* 如果有就给对应值加1
*/
public class DHM3 {
public static void main(String[] args) {
String s="esafrpiesjugpureguhhfsjdeurghda";
char[] chars=s.toCharArray();
Map<Character, Integer> map=new HashMap<Character, Integer>();
for (char c : chars) {
Integer num=map.get(c);
if(num==null||num==0) {
map.put(c, 1);
}else{
map.put(c, num+1);
}
}
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) {
Map< String, Integer> map=new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
//map.put("g", "学生类"); 报错(编译错误)
//筛选出value为偶数对应的key
Set<Entry<String, Integer>> entrySet=map.entrySet();
for (Entry<String, Integer> entry : entrySet) {
Object value=entry.getValue();
Integer val=(Integer)value;
if(val%2==0) {
System.out.println("偶数对应的key为:"+entry.getKey());
}
}
/**
* 抽象类与抽象方法
* 类里面不允许由抽象方法
* 抽象类里可以包邮抽象方法
* 如果不是泛型类型,那么方法内部不能用泛型 (不完全)
* 泛型方法解决如上问题
*/
泛型方法(简例):
public <T> List<T> list(Object T){
return null;
}
六、集合框架工具类
Collections排序
public static <T> void main(String[] args) {
List<Student> list=new ArrayList<Student>();
list.add(new Student("cc",12));
list.add(new Student("aa",22));
list.add(new Student("qq",18));
Collections.sort(list,new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
return o1.getAge()-o2.getAge();
}
});
for (Student s : list) {
System.out.println(s);
}
toString
String[] arr=new String[] {"ss","ee","oo","ee"};
//直接遍历返回地址
// for (String string : arr) {
// System.out.println(string);
// }
// toString 将数组变成集合来操做不能违背数组本身的特点
// 不能添加,删除
System.out.println(Arrays.toString(arr));
sort排序
// sort排序
Integer[] ar=new Integer[] {1,7,3,8,5,3};
Arrays.sort(ar);
System.out.println(Arrays.toString(ar));
宝,就到这里了!!!