如何進(jìn)行Collection接口的分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
中衛(wèi)網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),中衛(wèi)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為中衛(wèi)上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的中衛(wèi)做網(wǎng)站的公司定做!
###15Collection-List-ArrayList/LinkedList/
* * Collection接口中的方法
* A:添加功能
* boolean add(Object obj):把obj這個(gè)元素,添加到集合中去
* boolean addAll(Collection c):將 c 這個(gè)集合中的所有元素,都添加到本集合中來
* B:刪除功能
* void clear():刪除集合中的所有元素。
* boolean remove(Object obj):從集合中刪除 obj 這個(gè)元素
* boolean removeAll(Collection c):從集合中刪除c中含有的所有元素
* C:判斷功能
* boolean isEmpty():判斷集合是否為空。
* boolean contains(Object obj):判斷集合中是否存在 obj這個(gè)元素。
* boolean containsAll(Collection c):判斷集合中是否存在 c 集合中的所有元素。
* D:遍歷功能
* Iterator iterator():就是用來獲取集合中每一個(gè)元素。
* E:長度功能
* int size():獲取集合中的元素個(gè)數(shù)
* F:交集功能
* boolean retainAll(Collection c): 保留本集合和c這個(gè)集合中的共同元素
* G:把集合轉(zhuǎn)換成數(shù)組
* Object[] toArray():把集合變成 Object類型的數(shù)組。
*/
/*
* List接口中的方法(List接口繼承了Collection接口,所以下面只列出了List接口的特有方法)
* List的特有功能:
*
* A:添加功能
* void add(int index, Object obj):在索引為 index的位置,添加 obj這個(gè)元素
* B:刪除功能
* Object remove(int index):刪除索引為index的元素,并把這個(gè)元素返回
* C:修改功能
* Object set(int index, Object obj):把索引為index的位置,修改為 obj這個(gè)元素, 并且把修改之前的元素返回。
* D:獲取功能
* int indexOf(Object obj):返回 obj這個(gè)元素在集合中第一次出現(xiàn)的索引
* Object get(int index):獲取索引為 index的元素對(duì)象
* ListIterator listIterator():列表迭代器
* E:截取功能
* List subList(int fromIndex, int toIndex):返回一個(gè)新的集合,這個(gè)集合里面的元素,是原來集合中的一部分,直接看下面代碼
*
###15.08_集合框架(迭代器的原理及源碼解析)(了解)
Iterator it = iterator iterator();//獲取迭代器
it.hasNext()//判斷是否有元素一般while(it.hasNext())
It.next();//獲取元素
###15.12_集合框架(ListIterator)(了解)
* boolean hasNext()是否有下一個(gè)
* boolean hasPrevious()是否有前一個(gè)
* Object next()返回下一個(gè)元素
* Object previous();返回上一個(gè)元素
###15.13_集合框架(Vector的特有功能)(面試用開發(fā)中不用)
* A:Vector類概述
* B:Vector類特有功能
* public void addElement(E obj)
* public E elementAt(int index)
* public Enumeration elements()
B:List有三個(gè)兒子,我們到底使用誰呢?
查詢多用ArrayList
增刪多用LinkedList
如果都多ArrayList
集合框架(LinkedList的特有功能)(掌握)
* A:LinkedList類概述
* B:LinkedList類特有功能
* public void addFirst(E e)及addLast(E e) //在開始加入元素//在最后加入元素
* public E getFirst()及getLast()////獲取第一個(gè)元素//獲取最后元素
* public E removeFirst()及public E removeLast() //刪除第一個(gè)元素//刪除最后一個(gè)元素
* public E get(int index);// 獲取索引處的元素
_集合框架(棧和隊(duì)列數(shù)據(jù)結(jié)構(gòu))(掌握)
* 棧
* 先進(jìn)后出
* 隊(duì)列
* 先進(jìn)先出
_集合框架(泛型概述和基本使用)(掌握)
* A:泛型概述
* B:泛型好處
* 提高安全性(將運(yùn)行期的錯(cuò)誤轉(zhuǎn)換到編譯期)
* 省去強(qiáng)轉(zhuǎn)的麻煩
* C:泛型基本使用
* <>中放的必須是引用數(shù)據(jù)類型
* D:泛型使用注意事項(xiàng)
* 前后的泛型必須一致,或者后面的泛型可以省略不寫(1.7的新特性菱形泛型)
集合框架(增強(qiáng)for的概述和使用)(掌握)
* A:增強(qiáng)for概述
* 簡化數(shù)組和Collection集合的遍歷
* B:格式:
*
for(元素?cái)?shù)據(jù)類型 變量 : 數(shù)組或者Collection集合) {
使用變量即可,該變量就是元素
}
_集合框架(三種迭代的能否刪除)(掌握)
* 普通for循環(huán),可以刪除,但是索引要--
* 迭代器,可以刪除,但是必須使用迭代器自身的remove方法,否則會(huì)出現(xiàn)并發(fā)修改異常
* 增強(qiáng)for循環(huán)不能刪除只能遍歷
_集合框架(靜態(tài)導(dǎo)入的概述和使用)(了解)
* A:靜態(tài)導(dǎo)入概述
* B:格式:
* import static 包名….類名.方法名;
* 可以直接導(dǎo)入到方法的級(jí)別
* C:注意事項(xiàng)
* 方法必須是靜態(tài)的,如果有多個(gè)同名的靜態(tài)方法,容易不知道使用誰?
這個(gè)時(shí)候要使用,必須加前綴。由此可見,意義不大,所以一般不用,但是要能看懂。
_集合框架(可變參數(shù)的概述和使用)(掌握)
* A:可變參數(shù)概述
* 定義方法的時(shí)候不知道該定義多少個(gè)參數(shù)
* B:格式
* 修飾符 返回值類型 方法名(數(shù)據(jù)類型… 變量名){}
* C:注意事項(xiàng):
* 這里的變量其實(shí)是一個(gè)數(shù)組
* 如果一個(gè)方法有可變參數(shù),并且有多個(gè)參數(shù),那么,可變參數(shù)肯定是最后一個(gè)
/**
* * A:可變參數(shù)概述
* 定義方法的時(shí)候不知道該定義多少個(gè)參數(shù)
* B:格式
* 修飾符 返回值類型 方法名(數(shù)據(jù)類型… 變量名){}
* C:注意事項(xiàng):
* 這里的變量其實(shí)是一個(gè)數(shù)組
* 如果一個(gè)方法有可變參數(shù),并且有多個(gè)參數(shù),那么,可變參數(shù)肯定是最后一個(gè)
*/
public static void main(String[] args) {
int[] arr = {11,22,33,44,55};
//print(arr);
print(11,22,33,44,55);
System.out.println("---------------");
//print();
}
/*public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}*/
public static void print(int ... arr) { //可變參數(shù)其實(shí)是一個(gè)數(shù)組
for (int i = 0; i <
錯(cuò)誤!未找到目錄項(xiàng)。
arr.length; i++) {
System.out.println(arr[i]);
}
}
集合框架(Arrays工具類的asList()方法的使用)(掌握)
* A:案例演示
* Arrays工具類的asList()方法的使用
Integer[] i = {1,2,3,4,5};
List
System.out.println(l);
* Collection中toArray(T[] a)泛型版的集合轉(zhuǎn)數(shù)組
_集合框架(集合嵌套之ArrayList嵌套ArrayList)(掌握)
* A:案例演示
* 集合嵌套之ArrayList嵌套ArrayList
HashSet方法
1)基本數(shù)據(jù)類型去掉重復(fù)元素并且無索引(進(jìn) 出不同)
2)引用數(shù)據(jù)類型:要重寫toString方法
如果要去除重復(fù)就要重寫hashCode()方法與equals()方法
Hashcode()設(shè)置的原則:/如果對(duì)象的成員變量值一樣,那么就想辦法讓這個(gè)方法的返回值一樣,否則讓返回值不一樣
HashSet中想去掉重復(fù)元素必須重寫hashCode()和equals()方法;
LinkedHashSet方法
特點(diǎn):底層是鏈表實(shí)現(xiàn)的 是Set()集合中唯一一個(gè)能保證怎么存怎么取得功能
因?yàn)槭荋ashSet的子類,索引也是保證元素的唯一性
TreeSet 集合:
一般類型 用來對(duì)元素進(jìn)行排序的并且保證元素的唯一(去除重復(fù)元素,并排序)
引用數(shù)據(jù)類型:首先:重寫toString()方法;(如果不重寫輸出的是地址值)
實(shí)現(xiàn)接口implements comparable<本類名> 此時(shí)類名會(huì)報(bào)錯(cuò)(ctrl+1)
自動(dòng)創(chuàng)建一個(gè)方法compareTo(類名) {
判斷成員變量
}
以上三步缺一不可
/*@Override
//按照年齡排序
public int compareTo(Person o) {
int num = this.age - o.age; //年齡是比較的主要條件
return num == 0 ? this.name.compareTo(o.name) : num;//姓名是比較的次要條件
}*/
/*@Override
//按照姓名排序
public int compareTo(Person o) {
int num = this.name.compareTo(o.name); //姓名是主要條件
return num == 0 ? this.age - o.age : num; //年齡是次要條件
}*/
/*
* aaa
* bbb
*/
public int compareTo(Person o) {
int length = this.name.length() - o.name.length(); //比較長度為主要條件
int num = length == 0 ? this.name.compareTo(o.name) : length; //比較內(nèi)容為次要條件
return num == 0 ? this.age - o.age : num; //比較年齡為次要條件
}
面試手寫
public boolean equals(Object obj) {
System.out.println("執(zhí)行了嗎");
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
@Override
public int hashCode() {
final int NUM = 38;
return name.hashCode() * NUM + age;
}*/
HashSet()
* 1.特點(diǎn)
* TreeSet是用來排序的, 可以指定一個(gè)順序, 對(duì)象存入之后會(huì)按照指定的順序排列
* 2.使用方式
* a.自然順序(Comparable)
* TreeSet類的add()方法中會(huì)把存入的對(duì)象提升為Comparable類型
* 調(diào)用對(duì)象的compareTo()方法和集合中的對(duì)象比較
* 根據(jù)compareTo()方法返回的結(jié)果進(jìn)行存儲(chǔ)
* b.比較器順序(Comparator)
* 創(chuàng)建TreeSet的時(shí)候可以制定 一個(gè)Comparator
* 如果傳入了Comparator的子類對(duì)象, 那么TreeSet就會(huì)按照比較器中的順序排序
* add()方法內(nèi)部會(huì)自動(dòng)調(diào)用Comparator接口中compare()方法排序
* 調(diào)用的對(duì)象是compare方法的第一個(gè)參數(shù),集合中的對(duì)象是compare方法的第二個(gè)參數(shù)
* c.兩種方式的區(qū)別
* TreeSet構(gòu)造函數(shù)什么都不傳, 默認(rèn)按照類中Comparable的順序(沒有就報(bào)錯(cuò)ClassCastException)
* TreeSet如果傳入Comparator, 就優(yōu)先按照Comparator
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。