java學習第12天1.3

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

相關文章
相關標籤/搜索