---------------------- android培訓、java培訓、期待與您交流!
----------------------
Map集合:該集合存儲鍵值對,一對一對往裏存,而且要保證鍵的唯一性。
1、添加。
put(K key, V value)
putAll(Map<? extendsK,? extends V> m)
2、刪除。
clear()
remove(Object key)//根據鍵來刪除。鍵值唯一。將鍵值刪除並返回對應的值。
3、判斷。
containsKey(Object key)
containsValue(ObjectValue)
isEmpty()
4、獲取。
get(Object key)
size()
values()
entrySet()
keySet()
Map
|--Hashtable:底層是哈希表數據結構,不可以存入null鍵null值。該集合是線程同步的。jdk1.0 效率低。
|--HashMap:底層是哈希表數據結構。允許使用null鍵null值。該集合是線程不同步的。將Hashtable替換。jdk1.2 效率高
|--TreeMap:底層是二叉樹數據結構。線程不同步。可以用於給map集合中的鍵進行排序。(排序方式與TreeSet相似)
Map和Set很像。其實大家,Set底層就是使用了Map集合。
à可通過get方法的返回值是否爲null來判斷一個鍵是否存在。
à添加元素時,如果出現相同的鍵,那麼後添加的值會覆蓋原有鍵對應值,並且put方法會返回被覆蓋的值(返回原來的值)。
àHashMap只允許一條記錄的鍵爲空,但允許許多條記錄的值爲空。
map集合的兩種取出方式。[day16-04]
1、Set<k> keySet:將map中所有的鍵存入到Set集合中。因爲Set集合具備迭代器。所以可以通過迭代方式取出所有的鍵,然後根據get方法,獲取每一個鍵對應的值。
Map集合的取出原理:將map集合轉成set集合,再通過迭代器取出。
2、Set<Map.Entry<k,v>>entryset:將Map集合中的映射關係存入到set集合中,而這個關係的數據類型就是Map.Entry.
Map.Entry 其實Entry也是一個接口,它是Map中的一個內部接口。
什麼時候使用Map集合?
當發現數據之間存在映射關係時,就要先想到Map集合。
Map擴展:集合嵌套集合[day16-09]
集合框架中的工具類-----------------------------------------------day17
Collections類:
·對List排序:
public static <T extendsComparable<? super T>> void sort(List<T> list);
public static <T> voidsort(List<T> list,Comparator<? super T> c);
·獲取最值:
public static <T extendsObject & Comparable<? extends T>> T max(Collection<? extendsT> coll);
public static <T> Tmax(Collection<? extends T> coll,Comparator<> extends T> comp);
·二分查找:
public static <T> intbinarySearch(List<? extends Comparable<? super T>> list,T key);
public static <T> intbinarySearch(List<? extends T> list,T key,Comparator<? super T> c);
如果沒有找到返回-1
·替換反轉:
public static <T> voidfill(List<? super T> list,T obj);fill方法可以將List集合中所有元素替換成指定元素。
public static <T>boolean replaceAll(List<T> list,T oldVal,T newVal);
public static voidreverse(List<?> list);
public static <T>Comparator<T> reverseOrder();
public static <T>Comparator<T> reverseOrder(Comparator<T> cmp);
public static voidswap(List<?> list,int i,int j);
public static voidshuffle(List<?> list);
Arrays類:操作數組
數組變集合:
publicstatic <T> List<T> asList(T... a);
List<String>list = Array.asList(arr); Arrays中的asList()方法。
返回一個受指定數組支持的固定大小的列表(將數組變成List集合)。
將數組變成List集合的好處:可以使用集合的思想和方法來操作數組中的元素。
注意:將數組變成集合,不可以使用集合的增刪方法,因爲數組的長度是固定的。[day17-7]
①如果數組中的元素都是對象,那麼變成集合時,數組中的元素就直接轉成集合中的元素。
②如果數組中的元素都是基本數據類型,那麼會將該數組作爲集合中的元素存在。
集合變數組:
Collection接口中的toArray()方法。
1、指定類型的數組到底要定義多長呢?
當指定類型的數組長度小於了集合的size,那麼該方法內部會創建一個新的數組,長度爲集合的size。
當指定類型的數組長度大於了集合的size,就不會創建新的數組,而是使用傳遞進來的數組(會有null的值)。所以創建一個剛剛好的數組最優。使用.size()方法即可。
2、爲什麼要集合變數組?
爲了限定對元素的操作。不需要進行增刪了。
增強for循環
JDK1.5新特性,只要實現了Iterable接口(此接口只有一個方法:iterator())的對象都可以成爲“foreach”語句的目標,即都可以使用增強for循環。
格式:
for(數據類型 變量名:被遍歷的集合(Collection)或者數組)
{
}
侷限:只能取出,不能修改。對集合進行遍歷,只能獲取集合元素,但是不能對集合進行操作。
而迭代器除了遍歷,還可以進行remove集合中元素的動作,如果是用ListIterator,還可以在遍歷過程中進行增刪改查的動作。
傳統for循環與增強for循環有什麼區別?
高級for循環有一個侷限性,必須有被遍歷的目標。建議在遍歷數組的時候,還是使用傳統for循環語句。
可變參數
publicstatic void show(String str,int… arr) [day17-19]
JDK1.5新特性,其實就是上一種數組參數的簡寫形式,不用每一次都手動建立數組對象,只要將要操作的元素作爲參數傳遞即可,隱式將這些參數封裝成了數組。
使用時注意:可變參數一定要定義在參數列表的最後面。
靜態導入(StaticImport)
JDK1.5新特性。
import static java.util.Arrays.*;//導入的是Arrays這個類中的所有靜態成員。
import static java.lang.System.*;//導入了System類中所有靜態成員。
注意:
·當類名重名時,需要指定具體的包名。
·當方法重名時,要指定具體所屬的對象或者類。
其他對象
System
System:類中的方法和屬性都是靜態的。
out:標準輸出,默認是控制檯(屏幕)。
in:標準輸入。默認是鍵盤。
描述系統的一些信息。
獲取系統屬性信息:Properties getProperties()
因爲Properties是hashtable的子類,也就是Map集合的一個子類對象。那麼可以通過map的方法取出該集合中的元素。
該集合中存儲的都是字符串,沒有泛型定義。
Runtime對象。
該類中並沒有提供構造函數。說明不可以new 對象。那麼就會直接想到該類中的方法都是靜態的。
發現該類中還有非靜態方法。說明該類肯定會提供方法獲取本類對象,而且該方法是靜態的,而且返回值是本類類型。該方法是static Runtime getRuntime();
由這個特點可以看出該類使用了單例設計模式完成。
Math
ceil :double d = Math.ceil(12.34);//ceil返回大於指定數據的最小整數。
sop("d="+d);//d=13.0
floor:double d1 =Math.floor(12.34);//floor返回小於指定數據的最大整數。
sop("d1="+d1);//d1=12.0
round:long l = Math.round(12.34);//四捨五入
sop("l="+l);//12
pow:double d2 = Math.pow(2,3);//23
sop("d2="+d2);//8
隨機數:publicstatic double random()
double d = Math.random()//[0,1)包括0,不包括1的隨機小數。
int d = (int)(Math.random()*10+1);//1到10之間的隨機整數。
---------------------- android培訓、java培訓、期待與您交流! ----------------------
詳細請查看:http://edu.csdn.net/heima