java map 和 String 的使用
阿新 • • 發佈:2022-02-13
前言
此處是簡單的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 10public 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 }