SET集合
set集合存放不反複的元素,set集合中不存在equal值為ture的元素;hashSet和TreeSet是set接口的經常使用兩個實作類,分别用hash算法和排序二叉樹算法來實作;比如。将100以内不反複的随機20個數寫入set集合
Set<Interger> hashset=new HashSet<Integer>();
Random r =new Random();
while(hashset.size()<10){
hashset.add(r.nextInt(100));
}
set集合不同于List對象。元素不和下标進行相應,無法從Set集合中取出特定的元素,可是能夠周遊整個Set集合。方式是通過iterator周遊方法,傳回Iterator周遊對象;
也能夠是增強型For循環。在java編譯器中是等價的;
比如:
Set<String> strset = new HashSet<String>;
strset.add(“adb”);strset.add(“che”);
增強型for循環
for(String str: strset){
system.out.println(str)
疊代器為:
Iterator It =strset.iterator();
while(It.hasNext()){
String str=It.next();
system.out.println(str)
6.1 HashSet和HashCode
HashSet的實作通過Hash表實作的:
加入對象到HashSet的過程:
元素——取出元素的hashcode---通過Hash算法——索引到對應的存儲空間。
HashSet的contains方法實作:
參數對象的hashcode值找到對應的存儲空間。然後和該空間的對象進行equal比較。
hashCode方法。與equals方法的一緻性。一般使用IDE工具生成hashCode算法;
map集合
map集合定義了查找表,即所謂的“value””key”映射對,key能夠看出value的索引,作為Key的Value在集合中不能反複;
map接口的實作類經常使用的有hash表實作的HashMap,排序二叉樹的TreeMap;
map接口的經常用法有get和set:
Object put(K key, Object value);作用将Key_value映射對寫入到Map中,假設集合中已經包括該Key,則傳回Key映射的原理的Value值;假設沒有則傳回null
V get(K key);傳回K值映射的value;
7.1 Map的經常用法
Boolean containsKey(Object key);推斷map中是否包括Key的索引。
Boolean containsValue(object value);推斷map中是否包括value的值。
比如:
建立數組:
String str=”123,321,124,421,125,521”;
String[] arr=str.split(“,”);
建立Map對象
Map<String,integer> map=new HashMap<String,integer>();
統計字元出現的次數:str作為Key,出現次數作為Value;須要周遊字元數組,檢查集合中是否包含Key值,來推斷出現的次數;
for(i=0;i<arr.length;i++){
if(map.containsValue(arr[i]))
{/**put方法替換,value值 + 1。key不變*/
map.put(arr[i],map.get(arr[i]) + 1);
}else{
/**初始數值*/
map.add(arr[i],1)