Java練習問題(二)
3969 ワード
(一)テーマの説明
データテーブルレコードにはテーブルインデックスと数値が含まれています.テーブルインデックスと同じレコードをマージし、同じインデックスの数値を加算し、key値の昇順に出力します.
(二)説明を入力:
キー値のペアの数を入力し、ペアのindexとvalue値をスペースで区切って入力します.
(三)出力説明:
結合後のキー値ペアを出力(複数行)
例1
入力
コピー
しゅつりょく
コピー
(四)解答
(五)引申
(a)この問題の処理に同じkey値があるかどうかの考え方の転換は非常に重要であり,鍵値ペアを容器に格納し,後に入力した鍵値ペアに対して容器にcontainsがあるかどうかを判断するだけでよい.
(b)この問題はmap集合の遍歴に関連しており,これまであまり知られていなかったが,map集合の遍歴のいくつかの方式をまとめた.
データテーブルレコードにはテーブルインデックスと数値が含まれています.テーブルインデックスと同じレコードをマージし、同じインデックスの数値を加算し、key値の昇順に出力します.
(二)説明を入力:
キー値のペアの数を入力し、ペアのindexとvalue値をスペースで区切って入力します.
(三)出力説明:
結合後のキー値ペアを出力(複数行)
例1
入力
コピー
4
0 1
0 2
1 2
3 4
しゅつりょく
コピー
0 3
1 2
3 4
(四)解答
import java.util.*;
// Main public , Main
public class Main{
public static void main(String[] args){
fun1();
}
// : KEY key , value
// ,
public static void fun1(){
Scanner sc = new Scanner(System.in);
//
while(sc.hasNext()){
// , TreeMap
TreeMap map = new TreeMap<>();
// ,
int count = sc.nextInt();
for(int i = 0;i < count;i++){
//
int key = sc.nextInt();
int value = sc.nextInt();
//map get , key value ;containsKey,containsValue map
if(map.containsKey(key)){
// key , ,get key value, value
//
map.put(key,map.get(key)+value);
}else{
map.put(key,value);
}
// count
}
// , , , for
for(Integer m:map.keySet()){
// key value, map set
System.out.println(m+" "+map.get(m));
// ,key value ,
}
}
}
}
(五)引申
(a)この問題の処理に同じkey値があるかどうかの考え方の転換は非常に重要であり,鍵値ペアを容器に格納し,後に入力した鍵値ペアに対して容器にcontainsがあるかどうかを判断するだけでよい.
(b)この問題はmap集合の遍歴に関連しており,これまであまり知られていなかったが,map集合の遍歴のいくつかの方式をまとめた.
(1) : key Set , forEach key , map get , key value
package cn.shu.map;
import java.util.HashMap;
import java.util.Set;
public class MapAll {
public static void main(String[] args) {
HashMap hm = new HashMap<>();
hm.put("zhangsan", 24);
hm.put("lisi", 34);
hm.put("JayChow", 54);
hm.put("Stephen", 43);
Set keySet = hm.keySet();
for(String str:keySet){
int num = hm.get(str);
System.out.println(str+" "+num);
}
}
}
// :
lisi 34
JayChow 54
zhangsan 24
Stephen 43
(2) : map entrySet, key-value , getKey() getValue() key value 。
public class MapAll {
public static void main(String[] args) {
HashMap hm = new HashMap<>();
hm.put("zhangsan", 24);
hm.put("lisi", 34);
hm.put("JayChow", 54);
hm.put("Stephen", 43);
Set> entrySet = hm.entrySet();
Iterator> it = entrySet.iterator();
while(it.hasNext()){
Entry entry = it.next();
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+" "+value);
}
}
}
(3) : for , , key-value (entrySet()),
getKey() getvalue() key value
public class MapAll {
public static void main(String[] args) {
HashMap hm = new HashMap<>();
hm.put("zhangsan", 24);
hm.put("lisi", 34);
hm.put("JayChow", 54);
hm.put("Stephen", 43);
for(Map.Entry entry:hm.entrySet()){
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+" "+value);
}
}
}