題庫練習3(質因子、取近似值、合併表記錄)

1. 質因子

功能:輸入一個正整數,按照從小到大的順序輸出它的所有質數的因子(如180的質數因子爲2 2 3 3 5 )

最後一個數後面也要有空格

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        long num=sc.nextLong();
        System.out.println(new Main().getFactor(num)+" ");
    }
    
    public String getFactor(long num){
        String string="";
        if(num==0||num==1||num==2||num==3)
            return num+" ";
        int i=2;
        while(i*i<=num){
            if(num%i==0){
                string+=i+" ";
                num/=i;
                i=1;
            }
            i++;
        }
        return string+num;
    }
}

2.  取近似值

寫出一個程序,接受一個正浮點數值,輸出該數值的近似整數值。如果小數點後數值大於等於5,向上取整;小於5,則向下取整。

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        float f=sc.nextFloat();
        String str=f+"";
        int i=str.indexOf(".");
        char[] chs=str.toCharArray();
        long num=Long.valueOf(str.substring(0,i)).longValue();
        if(chs[i+1]-'5'>=0)
            num+=1;
        System.out.println(num);
    }
}

注:

1.int轉換爲String

比如int a=1;讓String str=a+"";

2.String轉換爲int

Integer.valueOf(String str).intValue();

3. 合併表記錄

數據表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出。

import java.util.Scanner;
import java.util.Map;
import java.util.TreeMap;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        
        int n=Integer.valueOf(sc.nextLine()).intValue();
        int i=0;
        Map<Integer,Integer> map=new TreeMap<Integer,Integer>();
        
        while(i<n){
            String[] strs=sc.nextLine().split(" ");
            int key=Integer.valueOf(strs[0]).intValue();
            int value=Integer.valueOf(strs[1]).intValue();
            if(map.containsKey(key)){
                map.put(key,value+map.get(key));
            }
            else
                map.put(key,value);
            i++;
        }
        for(int key:map.keySet()){
            System.out.println(key+" "+map.get(key));
        }
    }
}

注:

1.

boolean containsKey(Object key)
          如果此映射包含對於指定鍵的映射關係,則返回 true。

2.TreeMap和HashMap區別

TreeMap HashMap
基於紅黑二叉樹的NavigableMap的實現 數組方式存儲key/value
線程非安全 線程非安全
不允許null 允許null作爲key和value
key不可以重複,value允許重複 key不可以重複,value允許重複
存入TreeMap的元素應當實現Comparable接口或者實現Comparator接口,會按照排序後的順序迭代元素,兩個相比較的key不得拋出classCastException 不保證元素迭代順序是按照插入時的順序
主要用於存入元素的時候對元素進行自動排序,迭代輸出的時候就按排序順序輸出 key的hash值是先計算key的hashcode值,然後再進行計算,每次容量擴容會重新計算所以key的hash值,會消耗資源,要求key必須重寫equals和hashcode方法

HashMap:默認初始容量16,加載因子0.75,擴容爲舊容量乘2,查找元素快,如果key一樣則比較value,如果value不一樣,則按照鏈表結構存儲value,就是一個key後面有多個value;

3. Map遍歷

public static void main(String[] args) {
  Map<String,String> map=new HashMap<String,String>();
        map.put("1", "value1");
        map.put("2", "value2");
        map.put("3", "value3");
        map.put("4", "value4");
        
        //第一種:普通使用,二次取值
        System.out.println("\n通過Map.keySet遍歷key和value:");  
        for(String key:map.keySet())
        {
         System.out.println("Key: "+key+" Value: "+map.get(key));
        }
        
        //第二種
        System.out.println("\n通過Map.entrySet使用iterator遍歷key和value: ");  
        Iterator map1it=map.entrySet().iterator();
        while(map1it.hasNext())
        {
         Map.Entry<String, String> entry=(Entry<String, String>) map1it.next();
         System.out.println("Key: "+entry.getKey()+" Value: "+entry.getValue());
        }
        
        //第三種:推薦,尤其是容量大時  
        System.out.println("\n通過Map.entrySet遍歷key和value");  
        for(Map.Entry<String, String> entry: map.entrySet())
        {
         System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
        }
        
        //第四種  
        System.out.println("\n通過Map.values()遍歷所有的value,但不能遍歷key");  
        for(String v:map.values())
        {
         System.out.println("The value is "+v);
        }
 }

3. Map的存取

put()

get()

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章