一:Map集合特点
1:以键值对形式存在
public class Dome {
/**
* map集合特点
* @param args
*/
public static void main(String[] args) {
//1:键值对形式存在
//Map<键,值>
Map<String, Object> map=new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.put("e", 5);
System.out.println(map);
}
}
如上图所示 Map<键,值>
2:Map集合增删改查
//增加
map.put("a", 1);
//删除
map.remove("a");
//修改----就是覆盖,重新赋值
map.put("a", 3);
//查
System.out.println(map);
3:Map集合 键可以为空
//key 键可以为空
map.put(null, 1);
二:Map集合遍历方式
都在代码块上哦!!!
public class Dome1 {
/**
* map集合遍历方式
* @param args
*/
public static void main(String[] args) {
Map<String, Object> map=new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.put("e", 5);
// 1--获取所有的键 然后获取值 keySet
Set<String> key=map.keySet();
for (String s : key) {
System.out.println("键为:"+s+"值为:"+map.get(s));
}
// 2--entrySet
Set<Entry<String, Object>> entrySet=map.entrySet();
for (Entry<String, Object> entry : entrySet) {
System.out.println("键为:"+entry.getKey()+"值为:"+entry.getValue());
}
}
}
三:HashMap的使用
HashMap我们用一个例题
public class Dome2 {
/**
* 例
* 思路如下:
* 1.首先把string类型转化为char[]
* 2.新建一个map集合
* 3.遍历数组
* 4.新建一个integer类型
* 5.如果该字符没出现过则把他的值赋为1;如果有则加1
* @param args
*/
public static void main(String[] args) {
String s="gqiwdhoqhdoiqjowdqodqwidhwqyewqdnsdsqe";
char[] c=s.toCharArray();
Map<Character, Integer> map=new HashMap<Character, Integer>();
for (char d : c) {
Integer num=map.get(d);
if(num==null||num==0) {
map.put(d, 1);
}else {
map.put(d, num+1);
}
}
Set<Entry<Character, Integer>> entry=map.entrySet();
for (Entry<Character, Integer> entry2 : entry) {
System.out.println("键为:"+entry2.getKey()+"次数为:"+entry2.getValue());
}
}
}
四:泛型
Map<> <>里面的类型就是泛型 只能是引用数据类型
作用:将运行时的异常转化为编译时的错误
如下代码:
public class Dome3 {
public static void main(String[] args) {
Map<String, Object> map=new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.put("e", 5);
//例
map.put("f", "xxx");
// 1--筛选出值为偶数的键
Set<Entry<String, Object>> entry=map.entrySet();
for (Entry<String, Object> entry2 : entry) {
Object value=entry2.getValue();
Integer i=(Integer)value;
if(i % 2==0) {
System.out.println("偶数键为"+entry2.getKey());
}
}
}
}
因为新建的那个Map集合的泛型为<String,Object>而下面强转为Integer
但有个数据为map.put("f","xxx")中xxx不为Integer类型 并且这样血编译不会报错
但改为integer类型就是报编译错误,方便找错
五:集合框架工具类
/**
* 集合框架工具类
* @author T440s
*
*/
public class Dome4 {
public static void main(String[] args) {
List<User> list=new ArrayList<User>();
list.add(new User("张三", 1688));
list.add(new User("李四", 16888));
list.add(new User("王二", 168888));
list.add(new User("麻子", 1688888));
//1.Collections ---排序
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
// TODO Auto-generated method stub
return o2.getMoney() - o1.getMoney();
}
});
for (User user : list) {
System.out.println(user);
}
//2.Arrays.toString ---直接输出
String[] s=new String[] {"a","b","c","d"};
System.out.println(Arrays.toString(s));
//3.Arrays.asList ---数组转集合
//但还是不能改变它的数组结构
List<String> list1=Arrays.asList(s);
//4.Arraya.sort ---排序
int[] i=new int[] {1,2,3,4,5};
Arrays.sort(i);
System.out.println(Arrays.toString(i));
}
}
今天的代码就到这了,要好好学习哦!!!