1. 程式人生 > 其它 >java map 和 String 的使用

java map 和 String 的使用

前言

此處是簡單的map和String的使用方法,記錄下來是因為Python和java寫串了,因此記錄下來提個醒;

String 的遍歷

程式碼1

 1 public class TestString {
 2     static String s = "hello world";
 3 
 4     static void test03(){
 5         for (int i=0; i<s.length(); i++){
 6             System.out.println(s.charAt(i));
 7         }
 8     }
 9 
10
public static void main(String[] args) { 11 test03(); 12 } 13 }

可以正確的遍歷String。

程式碼2

 1 public class TestString {
 2     static String s = "hello world";
 3 
 4     static void test02(){
 5         for (int i=0; i<s.length(); i++){
 6             System.out.println(s[i]);
 7         }
8 } 9 10 public static void main(String[] args) { 11 test02(); 12 } 13 }

程式碼報錯

java: 需要陣列, 但找到java.lang.String

因為不能使用str[i]訪問字串中的字元。該操作僅適用於陣列。這是Python的用法,我寫串了。

程式碼3

 1 public class TestString {
 2     static String s = "hello world";
 3 
 4     static void test01(){
 5         for
(Character i:s){ 6 System.out.println(i); 7 } 8 } 9 10 public static void main(String[] args) { 11 test01(); 12 } 13 }

報錯

java: for-each 不適用於表示式型別
要求: 陣列或 java.lang.Iterable
找到: java.lang.String

增強for迴圈遍歷陣列時使用的普通for迴圈,而遍歷集合時使用的Iterator迭代器。

Collection介面繼承Iterable,所以Collection的所有子類也實現了Iterable介面。

Map

 1 public class TestString {
 2     static String s = "hello world";
 3 
 4     static void test01(){
 5         Map<String, Integer> mp = new HashMap();
 6         for(int i =0; i<s.length(); i++){
 7             if (mp.containsKey(s.charAt(i))){
 8                 mp[s.charAt(i)] ++;
 9             }else{
10                 mp[s.charAt(i)] = 1;
11             }
12         }
13     }
14 
15     public static void main(String[] args) {
16         test01();
17     }
18 }

java: 需要陣列, 但找到java.util.Map<java.lang.String,java.lang.Integer>

java中map不能像Python中那樣直接修改,正確程式碼如下:

 1 public class TestString {
 2     static String s = "hello world";
 3 
 4     static void test01(){
 5         Map<Character, Integer> mp = new HashMap();
 6         for(int i =0; i<s.length(); i++){
 7             mp.put(s.charAt(i), mp.getOrDefault(s.charAt(i), 1));
 8         }
 9     }
10 
11     public static void main(String[] args) {
12         test01();
13     }
14 }

map的遍歷

 1 public class mapTest {
 2     public static void main(String[] args) {
 3         Map<String, String> map = new HashMap<String, String>();
 4         map.put("student1", "阿偉");
 5         map.put("student2", "小李");
 6         map.put("student3", "小張");
 7         map.put("student4", "小王");
 8 //
 9 //        //1.使用entrySet()遍歷
10         System.out.println("使用entrySet()遍歷");
11         Iterator it = map.entrySet().iterator();
12         while (it.hasNext()) {
13             Map.Entry entry = (Map.Entry) it.next();
14             Object key = entry.getKey();
15             Object value = entry.getValue();
16             System.out.println("key=" + key + "  value" + value);
17 
18         }
19         //2.通過Map.Keyset遍歷key和value,普遍使用,二次取值
20         System.out.println("通過Map.Keyset遍歷key和value,普遍使用,二次取值");
21         for (String key : map.keySet()) {
22             System.out.println("Key=" + key + "\tvalue=" + map.get(key));
23         }
24         //3通過map.values()遍歷所有的value,但不能遍歷key
25         System.out.println("通過map.values()遍歷所有的value,但不能遍歷key");
26         for (String v : map.values()) {
27             System.out.println("value=" + v);
28         }
29         //4通過map.entrySet遍歷key和value(推薦使用,特別是容量大時)
30         System.out.println("通過map.entrySet遍歷key和value(推薦使用,特別是容量大時)");
31         for (Map.Entry<String, String> entry : map.entrySet()) {
32             System.out.println("key=" + entry.getKey() + "\tvalue=" + entry.getValue());
33         }
34     }
35 }