集合
集合ArrayList 可以添加重復數據
ArrayList<e> list = new ArrayList<e>();
如果是基本數據類型就用包裝類
如果不加<e>,那么集合可以同時存放基本數據類型和String類型
集合長度 size()方法,獲取集合長度.
集合增加
add(Object obj);方法給集合添加數據,
add(int index, Object obj);在指定下標index位置處添加obj數據;
1.index不能超出原來集合長度
2.如果下標index的位置上有值,就會把下標和之后的值往后移,把數據添加到下標index位置上.
集合刪除
remove(Object obj)方法 集合刪除
如果obj數據不是int類型和char類型,就查找第一個然后把它刪除
如果obj是int類型和char類型,就會默認為是下標,找到對應下標的值刪除
int類型和char類型要刪除的話,必須使用對應的封裝包. int -----Integer. char -----Charatcer.
集合修改
set(int index, Object obj)方法,下標index 新的值obj
集合查找
indexOf ();方法,放回數據第一次找到的下標,沒有放回-1
LastIndexOf();反向查找對應數據的下標,返回下標
contains();查找數據,找到返回true,沒有找到返回false
get();查找對應下標,放回該下標存放的值
判斷集合是否為空 isEmpty();
清空集合 clear();
Verctor集合與ArrayList集合
1.都是List接口下的集合;
2.ArrayList的方法和實現基本上和Vertor一樣,底層是數組實現
區別:
1.Vector的方法都是線性安全的,ArrayList沒有考慮線性安全問題.
2.ArrayList在一些算法上做了優化,效率更高.
ArrayList與LinkedList區別
1.ArrayList底層是數組實現,LinkedList底層是鏈表實現
1.1 在Java中鏈表就是自己實現了一個類,在類中記錄了前一個和后一個的地址,每次查找都需要找到前一個或后一個才能往前或往后找到
2.ArrayList查找速度快,但刪除和插入的速度慢
3.LinkedList刪除和插入的速度快,但查找速度慢
4.LinkedList有自己獨有的方法:addFirst addLast,removeFirst,rnoveLast
List接口下的集合特點
1.都是有序的(按照添加順序獲取)
2.都有下標
3.可以重復
Set接口下的集合特點
1.沒有下標
2.無序的
3.不能重復(會覆蓋)
Set接口的集合判斷是否重復是通過hash值是否相等判斷
HashSet集合與TreeSet集合區別
TreeSet集合放入進去的對象必須實現Comparable接口,並且實現Comparable接口的compareTo方法之后,就可以自動排序,(存儲地址不變)
Comparable接口與Comparator接口的區別
1.Comparable接口在Java.lang包,Comparator接口在Java.util包
2.Comparable接口下的compareTo方法只需一個參數,在實體類實現
Comparator接口下的compare方法需要兩個參數,在另外一個類或內部類實現
它們都是只有一個方法
在compareTo方法或compare方法中,自定義排序規則
注意:compareTo方法和compare方法返回的只需要是正數或負數就可以了
Collections
在Java.util包,集合的工具包,一個抽象方法
只能List集合使用,Set集合必須轉換成List集合才可以使用
sort方法一個參數時,實體類必須實現Comparable接口
Collections.sort(list);//List泛型集合
sort方法兩個參數時,必須另外一個類實現Comparator接口
Collections.sort(list,new StudentCompare()); //List泛型集合,實現Comparator接口的類
shuffle方法進行字符串隨機亂序
Collections.shuffle(list);//List泛型集合
集合遍歷
1.for循環 只適合List接口下的集合
2.foreach循環
3.迭代器Iterator
集合轉換類型
Set<Student> set = new TreeSet<Student>();
set.add(stu1);
set.add(stu2);
set.add(stu3);
set.add(stu4);
for (Student student : set) {
System.out.println(student);
}
System.out.println("======================");
//Set集合轉換List集合
List<Student> list = new ArrayList<Student>(set);