編輯:關於Android編程
聲明:博主所寫的都是針對剛入行的,從Java開始一步一步帶你走向Android,為你的Android開發之旅慢慢打下堅實的基礎,因為我碰到的問題肯定也是你即將碰到的,學習與前進的道路上,請大牛手下留情
Java中的Map集合簡介
1>Map集合的基本特點 Map集合 該集合存儲鍵值對是一對一對往裡存,而且要保證鍵的唯一性
2>map集合有三個小弟 兩個常見
2.1HashTable
底層是哈希表數據結構不可以存入 null作為鍵,null作為值出現,該集合是線程同步JDK1.0 效率低
2.2HashMap
底層是哈希表數據結構,並允許是null鍵null值,該集合是不同步的JDK 1.2 效率高
2.3TreeMap
底層是二叉樹數據結構,線程不同步,可以用於給Map集合中的鍵進行排序和Set集 合很像,其實Set集合底層使用了Map集合
3>Map集合常用方法
//創建Map集合 Map map = new HashMap(); //向Map集合中添加元素 map.put("01", "lilei"); map.put(null,"lili"); map.put("02",null); // 根據鍵判斷Map集合是否包含某個元素 System.out.println(map.containsKey("01")); // 根據鍵刪除某個元素 System.out.println("remove:" + map.remove("01")); // 根據鍵獲取集合中的某個元素 System.out.println("get:" + map.get("02")); // 獲取集合中的null鍵元素 System.out.println(map.get(null)); // 獲取map集合中所有的值 Collection c = map.values(); System.out.println(c); // 打印集合 System.out.println(map);
4.1Map集合中的keySet()
keySet將Map中所有的鍵都存入到Set集合中因為Set集合具備迭代器,所有可以迭代當時取出所有的鍵, 在根據 get方法,獲取每一個鍵對應的值Map集合的取出原理,將Map集合轉化成Set集合,在通過迭代器的方式取出
public static void main(String[]args){ Map<string, string=""> map = new HashMap<string, string="">(); map.put("01", "lilei"); map.put("02", "hanmei"); map.put("03", "lili"); map.put("04", "luxi"); map.put("05", null); map.put(null, "tom"); // 取出map集合中的所有的鍵 Set set = map.keySet(); // 通過map集合的迭代器 取出set集合中鍵,通過map的get取出值 Iterator it = set.iterator(); while (it.hasNext()) { //it.next即為map集合中的鍵 這裡根據鍵拿到所有的值 System.out.println(map.get(it.next())); } }
Set
public static void main(String[] args) { Map<hashmapstudent, string=""> map = new HashMap<hashmapstudent, string="">(); map.put(new HashMapStudent("lilei", 11), "北京"); map.put(new HashMapStudent("lilei", 11), "天津"); map.put(new HashMapStudent("hanmei", 12), "上海"); map.put(new HashMapStudent("lili", 13), "天津"); map.put(new HashMapStudent("luxi", 14), "南昌"); map.put(new HashMapStudent("tom", 15), "武漢"); //將Map.entrySet()轉化成Set集合 Set集合中有迭代功能 Set<map.entry<hashmapstudent, string="">> entry = map.entrySet(); Iterator<map.entry<hashmapstudent, string="">> it = entry.iterator(); while (it.hasNext()) { Map.Entry<hashmapstudent, string=""> mapEntry = it.next(); //獲取map集合中的鍵 HashMapStudent key = mapEntry.getKey(); //獲取map集合中的值 String value = mapEntry.getValue(); System.out .println(" Key = " + key.toString() + " Value = " + value); } } class HashMapStudent { private String name; private int age; public HashMapStudent(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "HashMapStudent [name=" + name + ", age=" + age + "]"; } }
5.1讓元素具有比較性
按照存入鍵的年齡進行排序,當主要條件年齡相同時按照次要條件姓名進行排序
5.2集合中的鍵為一個實體類 用實體類實現Comparable 接口 並覆蓋接口中的compareTo方法 此方法的返回值為 int類型
public class JavaMap03 { public static void main(String[] args) { TreeMap<treemapstudent, string=""> map = new TreeMap<treemapstudent, string="">(); map.put(new TreeMapStudent("tom", 12), "tianjing"); map.put(new TreeMapStudent("lilei", 11), "beijing"); map.put(new TreeMapStudent("hanmei", 14), "wuhan"); map.put(new TreeMapStudent("hanmei", 15), "wuhan"); map.put(new TreeMapStudent("lilia", 13), "shanghai"); map.put(new TreeMapStudent("lilib", 13), "shanghai"); Set<map.entry<treemapstudent, string="">> set = map.entrySet(); Iterator<map.entry<treemapstudent, string="">> it = set.iterator(); while (it.hasNext()) { Map.Entry<treemapstudent, string=""> mps = it.next(); TreeMapStudent tree = mps.getKey(); String str = mps.getValue(); System.out.println(tree + "..." + str); } } } class TreeMapStudent implements Comparable { private String name; private int age; public TreeMapStudent(String name, int age) { this.name = name; this.age = age; } //覆寫Comparable 中的方法 public int compareTo(TreeMapStudent another) { int num = new Integer(this.age).compareTo(new Integer(another.age)); //當主要條件年齡相等的時候 此時需要比較次要條件 就是姓名 字符串中自帶compareTo方法 if (num == 0) { return this.name.compareTo(another.name); } return num; } // 覆蓋hashCode方法 public int hashCode() { return name.hashCode() + age * 37; } // 覆蓋equals 方法 public boolean equals(Object o) { if (!(o instanceof HashMapStudent)) { throw new ClassCastException("類型不匹配"); } TreeMapStudent student = (TreeMapStudent) o; return this.name.equals(student.name) && this.age == student.age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "HashMapStudent [name=" + name + ", age=" + age + "]"; } }
證明集合是按照類HashMapStudent 類中的年齡進行排序的 當主要條件年齡相同時會按照次要條件姓名進行排序
4.3讓集合自身具有比較性
4.4寫一個類StudentComparator 實現Comparator 並將要比較的條件傳入,當集合初始化時,將StudentComparator 作為參數傳入
public class JavaMap03 { public static void main(String[] args) { TreeMap<treemapstudent, string=""> map = new TreeMap<treemapstudent, string="">(new StudentComparator() ); map.put(new TreeMapStudent("tom", 12), "tianjing"); map.put(new TreeMapStudent("lilei", 11), "beijing"); map.put(new TreeMapStudent("hanmei", 14), "wuhan"); map.put(new TreeMapStudent("hanmei", 15), "wuhan"); map.put(new TreeMapStudent("lilia", 13), "shanghai"); map.put(new TreeMapStudent("lilib", 13), "shanghai"); Set<map.entry<treemapstudent, string="">> set = map.entrySet(); Iterator<map.entry<treemapstudent, string="">> it = set.iterator(); while (it.hasNext()) { Map.Entry<treemapstudent, string=""> mps = it.next(); TreeMapStudent tms = mps.getKey(); String str = mps.getValue(); System.out.println(tms + "..." + str); } } } class StudentComparator implements Comparator { @Override public int compare(TreeMapStudent lhs, TreeMapStudent rhs) { int num = lhs.getName().compareTo(rhs.getName()); if (num == 0) { return new Integer(lhs.getAge()) .compareTo(new Integer(rhs.getAge())); } return num; } } class TreeMapStudent { private String name; private int age; public TreeMapStudent(String name, int age) { this.name = name; this.age = age; } @Override public int compareTo(TreeMapStudent another) { int num = new Integer(this.age).compareTo(new Integer(another.age)); if (num == 0) { return this.name.compareTo(another.name); } return num; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "HashMapStudent [name=" + name + ", age=" + age + "]"; } }
證明集合是按照姓名進行排序的
一、簡介 1、地圖 地圖展示:普通地圖(2D,3D)、衛星圖和實時交通圖。 地圖操作:可通過接口或手勢控制來實現地圖的點擊、雙擊、長按、縮放
用了微信sdk各種痛苦,感覺比qq sdk調用麻煩多了,回調過於麻煩,還必須要在指定包名下的actvity進行回調,所以我在這裡寫一篇博客,有這個需求的朋友可以借鑒一下,
雖然Android從2.3開始已經支持50種以上的語言,但是不是每種語言都有字體可以顯示。遇到一個新需求,有客戶要求對hindi語言的支持。於是上網找了一些資料,發現網上
SurfaceView大概是谷歌提供給開發者最吸引人的的組件了,原因是SurfaceView的界面刷新允許在非UI線程中更新,正因為此,很多頻繁更新界面的應用,如視頻播放