Java中的集合分類及常用方法


集合類特點:提供了一種存儲空間可變的存儲模型,存儲的數據容量可以隨時發生改變

集合分爲單列集合(collection集合),雙列集合(map集合),單列集合包括set集合和list集合。
集合都是接口,並不能直接創建對象。需要知道它的實現類

collection是一個接口,JDK不提供此接口任何直接實現,它提供了更具體的子接口的實現,如set和list


一、Collection集合常用的方法

1、boolean add(E e);添加元素
c.add("hello");
2、boolean remove(Object o);從集合中移出指定元素
c.remove("java");
3、void clear();清空集合中元素
c.clear();
4、boolean contains(Object o);判斷集合中是否存在指定元素
boolean b1 = c.contains("hello");
5、boolean isEmpty();判斷集合是否爲空
boolean b = c.isEmpty();
6、int size();集合的長度,也就是集合中元素的個數
int size = c.size();
7、集合的遍歷

public class CollectionDemo {
        public static void main(String[] args) {
            //創建Collection集合對象
            Collection<String> c = new ArrayList<String>();
            Collection<String> s = new LinkedList<String>();
            LinkedList<String> lk = new LinkedList<>();

            //集合中常用的方法
            //1、boolean add(E e);添加元素
            c.add("hello");
            c.add("world");
            c.add("java");
            c.add("javaee");
            System.out.println(c);//[hello, world, java, javaee]

            //2、boolean remove(Object o);從集合中移出指定元素
            c.remove("java");
            System.out.println(c);//[hello, world, javaee]

            //3、void clear();清空集合中元素
           // c.clear();

            //4、boolean contains(Object o);判斷集合中是否存在指定元素
            boolean b1 = c.contains("hello");
            System.out.println("contains(hello):"+b1);//contains(hello):true

            //5、boolean isEmpty();判斷集合是否爲空
            boolean b = c.isEmpty();

            //6、int size();集合的長度,也就是集合中元素的個數
            int size = c.size();
            System.out.println(size);

            // 集合的遍歷
            Iterator<String> it = c.iterator();
            while(it.hasNext()){    //it.hasNext()判斷是否還有元素
                String e = it.next();
                System.out.println(e);
            }

            // 集合的遍歷,增強for循環
            for(String sc : c){
                   System.out.println(sc);
               }

        }
    }

一、list集合

list集合特點:
有序:存儲和取出的元素順序一致
可重複:存儲的元素可以重複

List集合子類特點:
ArrayList底層是數組,查詢快,增刪慢
LinkedList底層是鏈表,查詢慢,增刪快

1、List集合特有的方法:
public class CollectionDemo {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            //添加元素
            list.add("java");
            list.add("javaee");
            list.add("hdfs");
            list.add(1,"world");
            list.remove(2);
            list.set(1,"hello");
            list.get(2);
    }
}
2、LinkedList集合特有的方法:
 List<Integer> i = new LinkedList<>();

二、Set集合

set集合中的方法與Collection中常用的方法一樣

set集合是不包含重複元素的集合,沒有帶索引的方法,所以不能通過for循環訪問其中的元素
set和list的區別有三點:(1)無序(2)無索引(3)不允許重複

List集合子類特點:
HashSet集合特點:

1、底層數據結構是哈希表
2、對集合的迭代順序不做任何的保證,也就是不能保證存儲和取出的元素的順序一致
3、沒有帶索引的方法,所以不能使用普通的for循環遍歷
4、由於是set集合,所以是不包含重複元素的集合
hashSet集合保證元素唯一性的源碼分析不清楚

LinkedHashSet集合特點:

1、由哈希表和鏈表實現set接口,具有可預測的迭代次序
2、由鏈表保證元素有序,也就是說元素的存儲和取出順序是一樣的
3、由哈希表保證元素唯一,也就是說沒有重複的元素

TreeSet集合特點:

元素有序,這裏的有序不是指存儲和取出的順序,而是按照一定的規則進行排序,具體排序方式取決於構造方法
TreeSet():根據其元素的自然排序進行排序。數字就從小到達排序
TreeSet(Comparator comparator):根據指定的比較器進行排序
沒有帶索引的方法,所以不能使用普通for循環遍歷
由於是set集合,所以是不包含重複元素的集合

//創建集合對象
Set<String> set = new HashSet<String>();

三、Map集合

Map集合概述
interface Map<K,V>
Map集合是一個接口,它的泛型由兩部分組成,K是鍵的類型,V是值的類型。它是將鍵映射到值的對象,不能包含重複的鍵,每個鍵可以映射到最多一個值

Map集合基本方法

public class MapDemo {
        public static void main(String[] args) {
            Map<String, String> s = new HashMap<String, String>();
            //put方法可以添加元素,也可以是修改元素
            s.put("heima001","linqignxia");//K 學號,V 姓名
            //put方法鍵第二次出現是修改元素
            s.put("heima001","劉備");
            s.put("heima002","zhangfei");
            System.out.println(s);//{heima001=劉備, heima002=zhangfei}

             //V get(Object key);根據鍵獲取值
            String v = s.get("heima001");
            System.out.println(v);//劉備

            //Set<K> keySet();獲取所有鍵的集合
            Set<String> keySet = s.keySet();
            System.out.println(keySet);//[heima001, heima002]

            //Collection<V> values();;獲取所有值的集合
            Collection<String> values = s.values();
            System.out.println(values);//[劉備, zhangfei]
            }
        }
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章