java学习第12天1.3java
HashMapgit
public class HashMapDemo {
public static void main(String[] args) {
//放值
//key value 都要使用泛型
HashMap<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "第1"); // 1 -- 1
map.put(1, "第2");
map.put(1, "第3");
//{1=第3} map 中 key是惟一的,若是重复put进去的话那么,
//后面的值会覆盖前面的值
//缘由:map 中 key使用经过set存放的,因此,key不能重复,也能够塞null
//map.put(null, "null");
map.put(null, null);
System.out.println(map);
//获取值
HashMap<Integer, String> map2 = new HashMap<Integer, String>();
map2.put(1, "第1"); // 1 -- 1
map2.put(5, "第2");
map2.put(3, "第3");
System.out.println(map2.get(3));
map2.put(null, null);
//null get获取值时,是经过key进行获取,若是map中没有这个key时,返回的是null
System.out.println(map2.get(5));
//null
System.out.println(map2.get(null));
//判断map中是否有某个key的时候能经过get返回值是不是null值进行判断么?
//答案是不能,同样使用containsKey containsValue 进行判断key
//或者value 是否存在
System.out.println(map2.containsKey(null));
System.out.println(map2.containsValue(null));
//Map的遍历
System.out.println("-------Map的遍历--------------------------");
System.out.println("第一种遍历..........................");
//第一种遍历
Set<Integer> keySet = map2.keySet(); //key的集合
//System.out.println(keySet);
for(Integer integer : keySet){
System.out.println("key:" + integer + " value:" + map2.get(integer));
}
System.out.println("第二种遍历..........................");
//第二种遍历 //Set<Map.Entry<Integer,String>>
Set<Map.Entry<Integer, String>> entrys = map2.entrySet();
for(Map.Entry<Integer, String> entry : entrys){
System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
}
//返回值的集合
//map2.values();
}
}
----------------------------------------------------------------------------编程
Comparator数组
public class Test {
public static void main(String[] args) {
//若是使用自定义类实现Comparable 这个接口,那么排序的策略就固定了,要修改只能
//修改代码,编程里面说:代码已经固化了
//按id排序
TreeSet<Student> treeSet4 = new TreeSet<Student>();
treeSet4.add(new Student(1, 1));
treeSet4.add(new Student(1, 1));
treeSet4.add(new Student(1, 1));
treeSet4.add(new Student(1, 1));
treeSet4.add(new Student(1, 1));
//按score排序
dom
//若是使用Comparator这个接口,它做用的对象是TreeSet跟添加进去的Student元素
//没有编码上的关联,只有调用的关系,因此若是要换比较策略时不须要修改student代码
TreeSet<Student> treeSet = new TreeSet<Student>(new Comparator<Student>() {ide
@Override
public int compare(Student o1, Student o2) {
return o1.id - o2.id;
}
});
treeSet.add(new Student(1, 1));
treeSet.add(new Student(1, 1));
treeSet.add(new Student(1, 1));
treeSet.add(new Student(1, 1));
treeSet.add(new Student(1, 1));
TreeSet<Student> treeSet2 = new TreeSet<Student>(new Comparator<Student>() {学习
@Override
public int compare(Student o1, Student o2) {
return o1.score > o2.score ? -1 : 1;
}
});
treeSet.add(new Student(1, 1));
treeSet.add(new Student(1, 1));
treeSet.add(new Student(1, 1));
treeSet.add(new Student(1, 1));
treeSet.add(new Student(1, 1));编码
TreeSet<Integer> treeSet3 = new TreeSet<Integer>();
treeSet3.add(1);
treeSet3.add(2);
treeSet3.add(3);
new Integer(1).compareTo(1);
}
}
----------------------------------------------------------------------------对象
/*
* 1.统计字符串中每一个字母出现的次数
* ECALIYHWEQAEFSZCVZTWEYXCPIURVCSWTDBCIOYXGTEGDTUMJHUMBJKHFGUKNKN
*/
public class Test {
public static void main(String[] args) {
/*第一步:
Map ---> key 没有重复字母
---> value 字母重复次数
第二步:*/
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
String str = "ECALIYHWEQAEFSZCVZTWEYXCPIURVCSWTDBCIOYXGTEGDTUMJHUMBJKHFGUKNKN";
for(int i = 0; i < str.length(); i++){
Character key = str.charAt(i); //获取key值
Integer value = map.get(key); //null //获取value
// System.out.println(value);
if(!map.containsKey(key)){ //若是map 中不存在这个key那么,塞进去,value 1
map.put(key, 1);
}else{
map.put(key, value + 1);//若是map 中存在这个key那么塞进去(覆盖原key),value +1
}
}
System.out.println(str);
for(Map.Entry<Character, Integer> entry : map.entrySet()){
System.out.println("字母:" + entry.getKey() + " 次数:" + entry.getValue());
}
---------------------------------------------------------------------------排序
一、随机生成有50个元素的数组,计算每一个数字出现的次数。【一个临时变量,循环多少比对】【使用Map最简便】
例如:
{1,2,3,4,6,2,4,1,2}
1出现的次数:2次
2出现的次数:2次
3出现的次数:1次
4出现的次数:2次
6出现的次数:1次
}
}
--------------
代码
public class Digit {
public static void main(String[] args) {
Random random = new Random();
int[] ary = new int[20];
for(int i = 0;i<20;i++){
ary[i] = random.nextInt(10);
System.out.print(ary[i]);
}
System.out.println();
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i = 0;i<ary.length;i++){
if(map.containsKey(ary[i])){
map.put(ary[i],map.get(ary[i]) + 1);
}else{map.put(ary[i],1);}
}
Set<Map.Entry<Integer,Integer>> enry = map.entrySet(); for(Map.Entry<Integer,Integer> en : enry){ System.out.println("数字:" + en.getKey() + "出现了" + en.getValue()); } }}