集合類特點:提供了一種存儲空間可變的存儲模型,存儲的數據容量可以隨時發生改變
集合分爲單列集合(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]
}
}
}
}