小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

java集合框架

 流曲頻陽 2017-04-13

1.java集合框架概述
java SE包含了由一組類和接口組成的java集合框架(java Collection Framework,簡稱JCF),其主要功能是用來將存儲的數(shù)據(jù)以某種結(jié)構(gòu)組織,并以特定的方式來訪問這些數(shù)據(jù),其目標(biāo)是提供一個處理對象集合的通用框架,減少程序員處理不同對象集合時的編碼量。  
集合類中的一些區(qū)別,除了它們是否支持重復(fù)元素操作外,還包括元素是否有順序,以及是否允許添加null元素。java集合框架中根據(jù)這三個區(qū)別,將對象的存儲方式分為三種類型,分別是:  
1.Set(集):對象容器中的對象沒有順序,且不能重復(fù)。  
2.List(列表):對象容器中的對象按照索引順序排序,而且可以有重復(fù)的對象。  
3.Map(映射):對象容器中的元素包含一對“鍵對象-值對象”映射,其中鍵對象不能重復(fù),值對象可以重復(fù)。
為支持對象的排序和遍歷訪問操作,java集合框架中又提供了幾個接口:  
1.接口SortedSet為Set類型容器提供拍戲功能。   
2.接口SortedMap為Map類型容器提供對鍵對象的排序。  
3.接口Comparable和comparator用來實現(xiàn)集合中對象的排序。  
2.Collection接口和Iterator接口
Collection接口中定義了Collection對象共有的一些基本方法

方法 描述
int size()返回當(dāng)前集合中包含的元素個數(shù) 
isEmpyt()判斷集合中是否含有元素
boolean contains(Objact o)判斷集合中是否含有某一指定元素
add(Objact o)向集合中添加某一個元素
remove(Objact o)從集合中刪除某一元素
Iterator iterator()返回一個遍歷器,用來訪問集合中的各個元素

 

 

 

 

 

 

 

Iterator接口是一種用于遍歷集合的接口。

Iterator接口中的方法
方法描述
hasNext()如果集合中還有更多元素,該方法返回true
next()返回集合中的下一個元素
remove()刪除Iterator返回的最后一個元素

 

 

 

 


1.List接口  
List接口繼承自Collection接口,它有如下特點:  
1.List中的元素是有順序的。  
2.List通常允許重復(fù)元素。  
3.List的實現(xiàn)類通常支持null元素。  
4.可以通過索引訪問List對象容器中的元素。     
List接口最常用的實現(xiàn)類是ArrayList類和LinkedList類。

1).ArrayList  

程序?qū)嵗?nbsp;   

復(fù)制代碼

package lei;    
    import java.util.ArrayList;    import java.util.List;    
    public class Test {        public static void main(String[] args) {          
            List list = new ArrayList<>();
            list.add(1);
            list.add("zhangsan");
            list.add(false);
            list.add('a');
            list.add(0, "lisi");
            list.add(1);
            list.remove(1);
            list.remove(2);
            list.set(0, "wangwu");            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
        }
    }

復(fù)制代碼

Object類定義的equals()方法只有在傳遞給該方法的對象與調(diào)用該方法的對象是同一對象的時候,才會返回true??梢酝ㄟ^重寫equals()方法來把具有相同狀態(tài)的兩個對象被看做是同一對象。

2).LinkedList  

方法描述
void addFirst在鏈表開頭添加一個對象
void addLast在鏈表末尾添加一個對象
getFirst()返回鏈表中的第一個元素
getLast()返回鏈表中的最后一個元素
removeFirst()刪除鏈表中的第一個元素
removeLast()刪除鏈表中的最后一個元素

 

 

 

 

 

程序?qū)嵗?/p>

復(fù)制代碼

package lei;    
    import java.util.LinkedList;    import java.util.List;    
    public class Test2 {           public static void main(String[] args) {
             LinkedList l=new LinkedList<>();
            l.add("zhangsan");
            l.add("lisi");
            l.addFirst(1);
            l.addLast(4);
            System.out.println(l.getFirst());
            System.out.println(l.getLast());
            l.removeFirst();
            l.removeLast();            for (int i = 0; i < l.size(); i++) {
                System.out.println(l.get(i));    
            }    
        }
    }

復(fù)制代碼

LinkedList與ArrayList的選擇
如果列表需要快速存取,但不經(jīng)常進(jìn)行元素的插入和刪除操作,那么選擇ArrayList會好一些;如果需要對;列表進(jìn)行頻繁的插入和刪除操作,那么就應(yīng)該選擇LinkedList。
2.set接口  
set接口繼承自Collectiion接口,同時也繼承了Collection接口的全部方法。set接口有以下特點:
1.Set類型容器中不能包含重復(fù)元素。當(dāng)加入一個元素到容器中時,要比較元素的內(nèi)容是否存在重復(fù)的,所以加入Set類型對象容器的對象必須重寫equals()方法。  
2.元素能能有順序,也可能沒有順序。  
3.因為元素可能沒有順序,所以不能基于下標(biāo)訪問Set中費元素。  
實現(xiàn)Set接口最常用的是HashSet類和TreeSet類。
1).Hashset
Hashset類是基于哈希算法的Set接口實現(xiàn),它主要有如下幾個特點:  
1.當(dāng)遍歷Hashset時,其中的元素是沒有順序的。  
2.Hashset中不允許出現(xiàn)重復(fù)元素。這里的重復(fù)元素是指有相同的哈希碼,并且用equals()方法進(jìn)行比較時,返回true的兩個對象。  
3.允許包含null元素。
如果我們編寫的類重新定義了equals方法,那么這個類也必須重新定義hashCode()方法,并且保證當(dāng)兩個對象用equals方法比較結(jié)果為true時,這兩個對象的hashCode()方法的返回值相等。  
程序?qū)嵗?nbsp;
                                                                                     

復(fù)制代碼

package lei;    
    import java.util.HashSet;    import java.util.Set;    
    public class Test4 {           public static void main(String[] args) {
            Set<String> set=new HashSet<String>();
            set.add("zhangsan");
            set.add("lisi");            for(String s:set){
                System.out.println(s);
            }
        }
    }

復(fù)制代碼

2).TreeSet
TreeSet類不僅實現(xiàn)類Set接口,還實現(xiàn)了SortedSet接口,從而保證集合中的對象按照一定的順序排序。當(dāng)向TreeSet集合中添加一個對象時,會把它插入到有序的對象序列中,但是這種排序并不是按照對象添加的順序排序,而是按照一定的算法來排序。  
TreeSet使用元素的自然順序?qū)υ剡M(jìn)行排序,或者根據(jù)創(chuàng)建Set時提供的Comparator進(jìn)行排序。TreeSet支持自然排序和自定義排序兩種排序方式。
3.Map接口
Map(映射)接口是java集合框架中不同于Collection接口的另一個重要接口,它對應(yīng)的是在一種從鍵(Key)到值(Value)的對應(yīng)關(guān)系的集合。Map類型的對象容器里面保存著兩組對象,一組對象用于保存Map里的Key,另外一組用于保存Value。Key和Value可以升級任何引用類型的數(shù)據(jù)。Key不能重復(fù),但是Value可以重復(fù)。
1).HashMap   
HashMap是基于哈希算法的Map接口的實現(xiàn)。HashMap將它的鍵保存在哈希表中進(jìn)行維護(hù),鍵是唯一的。但是,HashMap并不保證鍵以特定順序排列,特別是不保證順序永久不變。  
HashMap類實現(xiàn)了Map接口,從而具有Map接口的所有方法。

復(fù)制代碼

 package day1228;    
    import java.util.*;    
    public class HashMapDemo {        public static void main(String[] args) {            // 創(chuàng)建一個新的HashMap
            Map<String, String> map = new HashMap<String, String>();
            map.put("a1", "xiao");
            map.put("b2", "xiaol");
            map.put("a4", "xiaosd");
            map.put("b1", "12a");
            map.put("a3", "1");            // 使用iterator遍歷 鍵和值
            System.out.println("之前的Map值是:");
            Set<String> keys = map.keySet();            for (Iterator<String> i = keys.iterator(); i.hasNext();) {
                String key = i.next();
                String value = map.get(key);
                System.out.println(key + "=" + value);
            }            // 刪除鍵為"a4"的值
            System.out.println("\n刪除鍵值為a4的元素");
            map.remove("a4");            // //使用iterator遍歷 鍵和值
            System.out.println("\n之后的Map值:");
            keys = map.keySet();            for (Iterator<String> i = keys.iterator(); i.hasNext();) {
                String key = i.next();
                String value = map.get(key);
                System.out.println(key + "=" + value);
            }
        }
    }

復(fù)制代碼

2).TreeMap
TreeMap類是基于紅黑樹算法的Map接口實現(xiàn)。TreeMap中鍵的存放方式與TreeSet相似,它將鍵存放在樹中,鍵的順序按照自然順序或者自定義順序兩種方式排列。  
程序?qū)嵗?/p>

復(fù)制代碼

package day1228;    
    import java.util.*;    
    public class TreeMapDemo {        public static void main(String[] args) {            //創(chuàng)建一個新的TreeMap
            Map<Integer, String> map = new TreeMap<Integer, String>();
            map.put(1, "one");
            map.put(2, "two");
            map.put(3, "three");
            map.put(4, "four");
            map.put(5, "five");            //使用iterator顯示鍵和值
            System.out.println("之前的map值為:");
            Set<Integer> keys=map.keySet();            for(Object key:keys){
                String value=map.get(key);
                System.out.println(key+"="+value);
            }            //刪除鍵為3的值
            System.out.println("\n刪除鍵值為3的元素");
            map.remove(3);            //使用iterator顯示鍵和值
            System.out.println("\n之后的值Map為:");            for(Object key:keys){
                String value=map.get(key);
                System.out.println(key+"="+value);
            }
        }
    }

復(fù)制代碼


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多