Java集合
什么是集合?
集合類是一個大小可變的容器,
集合類的特點:型別可以不確定,大小可以不確定
使用場景:存盤的資料要經常發生改變
常用集合

集合主要分為Collection和Map兩大類:
Collection:是單列集合的頂層父類,是一個獨立元素的序列,這些個元素都服從一潭訓者多條規則,
List必須按照插入的順序保存元素,而Set不能有重復的元素,即Collection分為List和Set兩大分支,
【重點】
Collection:無序,可重復
List系列集合:有序,可重復,有索引,
– ArrayList:添加的元素是有序,可重復,有索引
– LinekdList:添加的元素是有序,可重復,有索引
Set系列集合:添加的元素是無序,不可重復,無索引
– HashSet:添加的元素是無序,不可重復,無索引
– LinkedHashSet:添加的元素是有序,不可重復,無索引
– TreeSet:按照大小默認升降序,不可重復,無索引
Map:存盤方式key:value鍵值對
Conllection集合
什么是Conllection集合?
Conllection集合是所有集合的祖宗類,它的功能是全部集合都可以繼承使用的
Conllection集合常用方法
| 方法名 | 說明 |
|---|---|
| public boolean add(E e) | 在集合末尾新增一個元素 |
| public void clear | 清空集合中的所有元素 |
| public boolean remove(E e) | 洗掉指定的元素,回傳是否洗掉成功 |
| public boolean isEmpty() | 判斷當前集合是否為空 |
| public boolean contains(Object obj) | 判斷當前集合中是否包含指定的物件 |
| public Object[] toArray() | 把集合中的元素,存盤到陣列中 |
| public int size() | 回傳集合中的元素個數 |
List集合
ArrayList實作了長度可變的陣列,在記憶體中分配連續的空間,遍歷元素和隨機訪問元素的效率比較高,底層資料結構是陣列,執行緒不安全,(它是我們用得非常非常多的一個集合)
實作方式:
ArrayList list = new ArrayList();//創建一個ArrayList集合,底層Object[] elementData初始化為{}
list.add(new Person("張三",1));//第一次呼叫add()時,在底層創建了長度10的陣列,并將資料張三添加到elementDate中
定義存盤型別
ArrayList<Person> list = new ArrayList<>(); //物件型別
list.add("張三",1); //加群1025684353一起吹水聊天
ArrayList<String> list = new ArrayList<>(); //String型別
list.add("張三");
ArrayList<Integer> list = new ArrayList<>(); //包裝型別 Boolean Byte Character Short Integer Long Float Double
list.add(1);
List集合常用方法:
| 方法名 | 說明 |
|---|---|
| public boolean add(E e) | 在集合末尾新增一個元素 |
| public boolean add(int index, E element) | 在指定位置添加元素 |
| public boolean remove(Object o) | 洗掉指定的元素,回傳是否洗掉成功 |
| public E remove(int index) | 洗掉指定索引處的元素,回傳被洗掉的元素 |
| public E set(int index,E element) | 修改指定索引處的元素,回傳被修改的元素 |
| public E get(int index) | 回傳指定索引處的元素 |
| public int size() | 回傳集合中的元素個數 |
| indexOf(Object o) | 查詢指定元素的位置 lastIndexOf也一樣,只是從尾部開始遍歷 |
List集合常用方法的使用:
ArrayList<String> list = new ArrayList<>();
list.add("張三"); //添加一個元素
list.add(5,"張三"); //在指定索引處添加一個元素
list.remove("張三"); //洗掉一個元素
System.out.println(list.remove("張三")); //洗掉一個元素并輸出true|false
list.remove(1); //洗掉指定索引處的元素
list.set(0,"李四"); //修改指定索引的元素,回傳被修改的元素
//加群1025684353一起吹水聊天
list.get(0); //獲取指定索引的元素
list.size(); //獲取集合中元素個數
list.lidexOf("李四"); //獲取指定元素的位置
List遍歷方式:
// 第一種遍歷方式:普通for回圈
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
// 第二種遍歷方式:增強for回圈
for (String string : arrayList) {
System.out.println(string);
}
//加群1025684353一起吹水聊天
// 第三種遍歷方式:迭代器
Iterator<String> iterator = arrayList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
Map集合
Map集合結構體系

什么是Map集合?
Map集合是一種雙列集合,每個元素包含兩個值,
Map集合的每個元素的格式:key=value(鍵值對元素),
Map集合的特點
1.Map集合都是由鍵決定的,
2.Map集合的鍵都是無序、不重復、無索引,
–Map集合后面重復的鍵對應的元素會覆寫前面的整個元素!
3.Map集合的值是無要求的,
4.Map集合的鍵值對都可以為null,
HashMap和LinkedHashMap的區別
HashMap:元素按照鍵是無序、不重復、無索引,值不做要求,
LinkedHashMap:元素按照鍵是有序、不重復、無索引、值不做要求,
Map集合使用:
1.Map集合存盤的資訊更加具體豐富,
//Conllection:{"張三","男",23,"中國","深圳","程式員"}
//Map:{name="張三",sex="男",age=23,country="中國",city="深圳",occupation="程式員"}
Map<Person,String> maps = new HashMap<>
maps.put(new Person("張三","男","23"),"中國");
2.Map集合適合存盤物件資料
Map集合常用方法:
| 方法名 | 說明 |
|---|---|
| public v put(K key, V value) | 把指定的鍵與指定的值添加到Map集合中 |
| public v remove(Object key) | 洗掉指定的值所對應的元素 |
| public boolean isEmpty() | 判斷集合是否為空 |
| abstract int size() | 獲取集合大小 |
| public v get(Object key) | 根據鍵獲取指定元素 |
| public set keySet() | 獲取Map集合中所有的鍵,存盤到Set集合中 |
| public Conllection values() | 獲取Map集合中所有的值,存盤到Conllection集合中 |
| public set<Map.Entry<K,V>> entrySet() | 獲取到Map集合中所有的鍵值對物件的集合(Set集合) |
| public boolean containKey(Object key) | 判斷該集合中是否包含某個鍵 |
| public boolean containValue(Object value) | 判斷該集合中是否包含某個值 |
Map用法:
Map<String,Integer> maps = new HashMap<>();
maps.put("張三",1); //添加元素
maps.put(null,null);
maps.clear(); //清空集合
maps.isEmpty(); //判斷集合是否為空,為慷訓傳true,不為慷訓傳false
maps.get("張三"); //根據鍵獲取對應值 回傳1
maps.size(); //獲取集合大小
maps.remove("張三"); //根據鍵洗掉某個元素 回傳1
maps.containsKey("張三"); //判斷集合是否包含 張三 ,回傳true或flase
//加群1025684353一起吹水聊天
maps.containsValue(1); //判斷集合是否包含鍵 1 ,回傳true或flase
//map集合的鍵是無序不重復的,所以回傳的是一個Set集合
Set<String> keys = maps.keySet();//獲取Map集合中所有的鍵,存盤到Set集合中
//Map集合的值是不能做要求的,可能重復,所以要用Conllection集合接收!
Conllection<Integer> values = maps.values();//將maps集合中的值存入到Conllection集合中
Map集合的遍歷:
map集合3中遍歷方式:
1.“鍵找值”的方式遍歷:先獲取Map集合全部的鍵,再根據遍歷鍵找值,
2.“鍵值對”的遍歷方式:難度較大,
3.Lambda運算式遍歷
//通過鍵找值方式遍歷
Set<String> keys = maps.keySet();
for(String key:keys){
Integer value = maps.get(key); //通過鍵獲取對應的值
System.out.println(key + "=" + value);
}
}
//Lamboda運算式遍歷
maps.forEach(k , v) ->{
System.out.println(k + "=>" + v);
}
Collections工具類
什么是Collections工具類?
java.utils.Collections:是集合工具類
Collections并不屬于集合,是用來操作集合的工具類
Conllections常用方法:
| 方法名 | 說明 |
|---|---|
| public static boolean addAll(Conlection<? super T> c,T… emlements) | 給集合物件批量添加元素 |
| public static void shuffle(List<?> list) | 打亂集合順序 |
| public static void sort(List list) | 將集合中元素按照默認規則排序 |
| public static void sort(List list,Comparator<? super T>) | 將集合中的元素按照指 |
Conllections常用方法的使用:
List<String> name = new ArrayList<>();
//給集合添加多個元素
//Conllections.addAll(集合名,需要添加的元素);
Conllections.addAll(name,"張三","李四","王五");
//打亂集合順序
Conllections.shuffle(name);
//默認升序排序
Conllections.sort(name);
//自定義比較規則排序
List<Person> persons = new ArrayList<>();
Person person1 = new Person("張三",1,"男");
Person person2 = new Person("李四",2,"男");
Person person3 = new Person("王五",3,"男");
Person person4 = new Person("趙六",4,"男");
Conllections.addAll(persons,person1,person2,person3,person4);
//自定義規則
//加群1025684353一起吹水聊天
Conllections.sort(persons,new Comparator<Person>){
@Override
public int compare(Person p1,Person p2){
//年齡比較升序
if(p1.getAge() > p2.getAge()) return 1;
if(p1.getAge() < p2.getAge()) return -1;
/*
//年齡比較降序
if(p1.getAge() > p2.getAge()) return -1;
if(p1.getAge() < p2.getAge()) return 1;
*/
return 0;
}
}
最后,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰, 可以的話請給我一個三連支持一下我喲,我們下期再見
領取資料

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/290640.html
標籤:java
