List接口下的集合


集合框架

 

List接口下的集合特點: Set接口下的集合特點:

1.都是有序的 1.都是無序的 2.都有下標 2.沒有下標

3.都可以重復 3.不可重復(覆蓋)

List接口下的集合

1.ArrayList

  ArrayList  list = new ArrayList();//長度可加,但加了也是0
//集合的長度 size() 數組的長度 數組名.length 是一個屬性 字符串長度 名.length() 是一種方法
//集合的長度在初始化的時候為0,當添加第一個數據的時候,會給一個默認的長度10,當添加的數據超過了10個,長度(10轉換為2進制)會向右移動一位。長度也有一個最大值!
System.out.println(list.size()) //0
 //添加,可以添加重復的數據,也可以添加null,且會占用長度
list.add(111);
list.add(22.2);
list.add(true);
list.add("aaa");
list.add('v');
list.add(null);
//按指定位置添加:list.add(index,添加的數據) 注意:index不能超出原集合的最大長度
list.add(2,333)
//通過下標來獲取集合中的每個值: list.get(下標)
   for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//集合的刪除
//針對非int類型
list.remove("aaa");
System.out.println("==================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//刪除int類型的值,必須使用封裝類
list.remove(new Integer(111));
System.out.println("=======================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//集合的修改
//list.set(下標,新的值)
list.set(0, 222);
System.out.println("====================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//查找集合中的某個值indexOf,lastIndexOf 返回指定數據第一次被查找到在集合中的下標
//如果沒有找到返回-1
System.out.println(list.lastIndexOf("aaa"));
System.out.println(list.lastIndexOf(null));
//查找集合中是否有某個值,找到返回true,否則false
System.out.println(list.contains(null));

//判斷集合是否為空
System.out.println(list.isEmpty());
System.out.println(list.size());
//清空集合中所有的元素
list.clear();
System.out.println(list.size());    

2.Vector

和ArrayList差不多,但已經不用了。

Vector 和ArrayList的區別:

1.ArrayList中的方法和實現和Vector基本一樣,底層都是數組的實現。

2.Vector中的方法都是線程安全的,ArrayList沒有考慮線程問題。

3.ArrayList在一些算法上做了優化,提高了效率。

3.Stack

和Vector差不多,也已經不用了。

4.LinkList

  LinkedList linkedList = new LinkedList();
linkedList.add("aaa");
linkedList.add("bbb");
linkedList.add("ccc");

linkedList.remove("ccc");

for (int i = 0; i < linkedList.size() ; i++) {
System.out.println(linkedList.get(i));
}
linkedList.addFirst("ffff");
linkedList.removeLast();

LinkList 和ArrayList的區別:

1.ArrayList底層是數組的實現,LinkedList底層是鏈表的實現 1.1 在java中鏈表就是自己實現了一個類,在類中記錄了前一個和后一個的地址 每次查找都需要找到前一個或者后一個才能往前或者往后找到 2.ArrayList查找速度快,但是刪除和插入的速度慢 3.LinkedList刪除和插入的速度快,但是查詢速度較慢 4.LinkedList有自己獨有的addFirst addLast removeLast removeFirst的方法

鏈表:

在java中鏈表就是自己實現了一個類,在類中記錄了前一個和后一個的地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM