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()); } }}