Vector與Map
Map集合
map集合的使用
package com.cloud.map; import java.util.HashMap; import java.util.Map; publicclass Demo1 { /* 雙列集合: Map:實現Map介面的集合類,具備的特點:儲存的資料都是以鍵值對的方式,鍵不可以重複,值可重複 */ publicstatic void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("1","aaa"); map.put("2" map.put("3","ccc"); /*新增常用的方法 //這裡返回null:表示4這個鍵以前沒有關聯的值 System.out.println(map.put("4", "ddd")); //這裡輸出關聯的值ddd,會被abc覆蓋 map.put("5", "abc"); System.out.println(map.put("4", "abc")); Map<String,String> map2 = new HashMap<String,String>(); map2.put("6", "eee map2.put("1", "aaa"); map2.put("1", "ert"); map.putAll(map2); */ /*刪除資料常用的方法 System.out.println("刪除的資料:"+map.remove("1")); map.clear(); */ /*獲取方法 System.out.println(map.get("1")); System.out.println(map.size()); */ /*判斷的方法 System.out.println(map.containsKey("1")); System.out.println(map.containsValue("aaa")); map.clear(); map.put(null, null); System.out.println(map.isEmpty()); */ System.out.println("集合元素:"+map); } } |
HashMap的使用
package com.cloud.map; import java.util.HashMap; import java.util.Map; publicclass Demo2 { /* HashMap 底層使用hash表來實現 向HashMap中新增元素的時候,首先呼叫鍵的hashCode方法得到元素的雜湊碼的值,經過運算,得 到該元素在雜湊表中的位置; 1.如果該位置沒有儲存元素,則元素之間新增到雜湊表中 2.如果該位置有其他的元素,會呼叫元素的equals方法,如果返回false,該元素被儲存,返回 true,該元素重複不能儲存 */ publicstatic void main(String[] args) { Map<Person,String> map = new HashMap<Person,String>(); map.put(new Person(1,"a"),"aaa"); map.put(new Person(2,"b"),"bbb"); map.put(new Person(3,"c"),"ccc"); map.put(new Person(1,"a"),"ddd"); System.out.println("集合的元素:"+map); } } class Person{ privateint id; private Stringname; public Person(int id,String name){ this.id=id; this.name=name; } @Override public String toString() { return"[編號:"+this.id+";姓名:"+this.name+"]"; } @Override publicint hashCode() { //TODO Auto-generated method stub returnthis.id; } @Override publicboolean equals(Object obj) { Person p=(Person) obj; returnthis.id==p.id; } } |
TreeMap的使用
package com.cloud.map; import java.util.Comparator; import java.util.TreeMap; publicclass Demo3 { /* TreeMap:基於二叉樹的資料結構實現的,會對具備自然特性的鍵進行排序儲存 1.元素的鍵具備自然特性,直接排序儲存 2.不具備自然特性,實現Comparable介面,在ComparaTo中定義排序規則 3.不具備自然特性,沒有實現Comparable介面,在建立TreeMap物件的時候傳入比較器 */ publicstatic void main(String[] args) { //建立一個比較器 MyComparator my=new MyComparator(); TreeMap<Emp,String> map=new TreeMap<Emp,String>(my); /*map.put('c', 3); map.put('b', 2); map.put('a', 1);*/ map.put(new Emp("a",5000),"6"); map.put(new Emp("b",4000),"5"); map.put(new Emp("c",3000),"4"); map.put(new Emp("d",2000),"3"); //下面e的值1就會覆蓋d的值3 map.put(new Emp("e",2000),"1"); System.out.println(map); } } class Emp/*implements Comparable<Emp>*/{ String name; intsarlary; public Emp(String name,int sarlary){ this.name=name; this.sarlary=sarlary; } @Override public String toString() { return"[姓名:"+this.name+";薪水:"+this.sarlary+"]"; } /*@Override publicint compareTo(Emp o) { return this.sarlary-o.sarlary; }*/ } //自定義一個比較器 class MyComparatorimplements Comparator<Emp>{ @Override publicint compare(Emp o1, Emp o2) { return o1.sarlary-o2.sarlary; } } |
Vector集合
Vector類 是在 java 中可以實現自動增長的物件陣列,vector在C++標準模板庫中的部分內容,它是一個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector是C++標準模板庫中的部分內容,中文偶爾譯作“容器”,但並不準確。它是一個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是一個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說,vector是一個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。簡單的使用方法如下:123 | vector<int>test; //建立一個vector test.push_back( 1 ); test.push_back( 2 ); //把1和2壓入vector這樣test[0]就是1,test[1]就是2 |
1234 | vector<int>test; //建立一個vector test.push_back( 1 ); test.push_back( 2 ); //把1和2壓入vector這樣test[0]就是1,test[1]就是2 int i =test. at ( 1 ); //i為2 |
123 | public Vector() public Vector( int initialcapacity, int capacityIncrement) public Vector( int initialcapacity) |
package com.cloud.vector; import java.util.Enumeration; import java.util.Vector; publicclass Day1 { /* Vector底部維護Object陣列,實現和ArrayList一樣,但是Vector是執行緒安全,效率低,二者比較: 相同點: 1.底部都是維護Object的陣列 不同點: 1.ArrayList執行緒不同步,效率高 2.ArrayList JDK1.2出現,Vector JDK1.0出現 */ publicstatic void main(String[] args) { Vector v=new Vector(); v.addElement("Spring1"); v.addElement("Spring2"); v.addElement("Spring3"); Enumeration e = v.elements(); while(e.hasMoreElements()){ System.out.println(e.nextElement()); } } } |