一.集合的相關(guān)概念
* 實(shí)際操作中需要一個(gè)隨時(shí)改變的數(shù)組-----集合
* Collection抽象接口? ArrayList 定義集合的相關(guān)操作
* List---接口 數(shù)組 特點(diǎn):有序 可重復(fù)
* ArrayList
* LinkedArrayList
* Set---集合特點(diǎn):無(wú)序 不重復(fù)
* HashSet
* Map---接口? 有映射關(guān)系 鍵值對(duì) 鍵不能相同 值可以相同
* Collections
* 集合的元素個(gè)數(shù)可以變化
* 添加元素 add? addAll
* 刪除元素插入元素
* 訪問(wèn)元素
二檬果。相關(guān)方法蜓席。
1.添加方法add()爽雄;
Collection<String> t1 = new ArrayList();
? ? //添加
? t1.add("efds");
? t1.add("lay");
2.刪除方法remove()才漆;
t1.remove("efds");
3.獲取元素個(gè)數(shù)方法siae();
System.out.println(t1.size());
4.判斷是否包含一個(gè)元素方法contain();
if(t1.contains("lay")){
? ? System.out.println("有l(wèi)ay");
}else{
? ? System.out.println("無(wú)");
}
5.判斷是否為空方法 isEmpty();
if(t1.isEmpty()){
? ? ? System.out.println("是空的");
? }
6.判斷內(nèi)容是否相同方法equals()
Collection<String> t2 = new ArrayList<>();
t2.add("Merry");
t2.add("Jack");
t2.add("Rose");
t2.add("Tom");
if (t1.equals(t2)){
? ? System.out.println("兩個(gè)集合相同");
}
7.清空方法clear()
t1.clear();
8.集合的遍歷
8.1使?用Iterator來(lái)遍歷
Iterator iterator = t2.iterator();
8.2hasNext 判斷是否有元素预愤,next? 獲取下?一個(gè)對(duì)象
while (iterator.hasNext())
{
System.out.println(iterator.next());
}
8.3. for-each 增強(qiáng)for循環(huán) 快速循環(huán)
for (String obj: t2){
System.out.println(obj);
}
8.4. for- i
for (int i = 0; i < t2.size(); i++){
? ? System.out.println(((ArrayList<String>) t2).get(i));
}
9.自動(dòng)將基本數(shù)據(jù)類型包裝為對(duì)應(yīng)的類c
ArrayList<Integer> score = new ArrayList<>();
score.add(2);
score.add(3);
10.在末尾添加
score.add(0,1);//在指定位置插?入
11.訪問(wèn)指定元素
score.get(1);//1為索引值
12.修改?一個(gè)元素
score.set(0,0);//第一個(gè)0:索引值洁桌,第二個(gè)0:修改值
13.remove 刪除當(dāng)前遍歷過(guò)后的對(duì)象
score.remove((Integer)3); //刪除指定的對(duì)象 3不是索引值,可以理解為數(shù)據(jù)
14.取兩個(gè)集合的交集retainAll()
ArrayList<Integer> a3 = new ArrayList<>();
a3.add(23);
a3.add(2);
score.retainAll(a3);
15.將?一個(gè)集合里?的內(nèi)容添加到當(dāng)前集合中
score.addAll(a2);
16.訪問(wèn)某個(gè)對(duì)象在集合里面的索引
ArrayList<Integer> a4 = new ArrayList<>();
a4.add(1);
a4.add(2);
a4.add(2);
a4.add(1);
System.out.println(a4.indexOf(1));//第?一次出現(xiàn)的位置
System.out.println(a4.lastIndexOf(1));//最后?一次出現(xiàn)的位置 倒數(shù)第一個(gè)
17.將ArrayList轉(zhuǎn)化為普通數(shù)組 Integer方法
17.1? Integer[] objects = new Integer[a4.size()];
a4.toArray(objects);
17.2? ?Object[] objects1 = a4.toArray();
18.刪除某個(gè)范圍內(nèi)的對(duì)象
? ? block
Lambda表達(dá)式;
return (var1) -> {
return !this.test(var1);
};
return 20;
19.獲取集合某個(gè)范圍的子集合
List integers = a4.subList(1, 3);
List<Integer> integers = a4.subList(0,4);//從0索引值的數(shù)據(jù)值開始數(shù)3個(gè)
實(shí)現(xiàn)接口
20.閉包 enclusure 把函數(shù)作為一個(gè)方法的參數(shù)
class ArrayClass {
? ? public void test(int[] target, Show s){
? ? ? ? for(int element: target){
? ? ? ? ? ? s.customShow(element);
? ? ? ? }
? ? }
21.必須是接口 這個(gè)接口里面只有一個(gè)方法
interface Show{
? ? void customShow(int element);
}
22.class PXDClassimplements Show {
@Override
? ? public void customShow(int element){
System.out.println(element);
? ? }
}
23.class PXDCompareimplements Comparator {
//什么時(shí)候需要自己手動(dòng)創(chuàng)建比較器
? ? //如果系統(tǒng)默認(rèn)提供的方法不能完成我們的比較
@Override
? ? public int compare(Object o,Object t1){
int mo = (int)o;
? ? int mt1 = (int)t1;
? ? return mo - mt1;
}
}
24.1.使用方式: 定義一個(gè)類實(shí)現(xiàn)接口
?ArrayClass ac = new ArrayClass();
int[] num = {1, 2, 3, 4};
PXDClass pc = new PXDClass();
ac.test(num,pc);
24.2.使用匿名類
?ArrayClass a = new ArrayClass();
int[] n = {1, 2, 3, 4};
a.test(num,newShow());
{
@Override
public void coustomShow (int element){
System.out.println(element);
}
24.3. 使用Lambda表達(dá)式
//如果參數(shù)是一個(gè)接口類對(duì)象案腺,且接口里面只有一個(gè)方法
//可以省略方法名
?ArrayClass ac = new ArrayClass();
int[] num = {1, 2, 3, 4};
ac.test(num,(int element)->{
System.out.println(element);
});
三.總結(jié)
總體來(lái)說(shuō)這幾天學(xué)習(xí)的知識(shí)很碎很多,雖然不是很難康吵,但是方法很多劈榨,我也趁著這個(gè)機(jī)會(huì)把之前落下的補(bǔ)回來(lái),為之后進(jìn)入安卓階段做好準(zhǔn)備晦嵌,因?yàn)槲乙膊幌雱e人都可以獨(dú)立完成或者自己想要寫一個(gè)好玩的項(xiàng)目的時(shí)候自己還因?yàn)槟承┲R(shí)點(diǎn)的缺乏苦惱同辣,因?yàn)楸緛?lái)代碼自身就容易讓人疲倦拷姿,如果再?zèng)]有了寫有趣的Demo的·能力的話,真的蠻難堅(jiān)持下去的旱函。