Java——集合框架(List)

集合框架(List的三個子類的特點)

  • A:List的三個子類的特點
    ArrayList:
    底層數據結構是數組,查詢快,增刪慢。
    線程不安全,效率高。
    Vector:
    底層數據結構是數組,查詢快,增刪慢。
    線程安全,效率低。
    Vector相對ArrayList來說 查詢慢(線程安全)
    Vector相對LinkedList來說,增刪慢(數組結構)
    LinkedList:
    底層數據結構是鏈表,查詢慢,增刪快。
    線程不安全,效率高。

    Vector和ArrayList的區別
    Vector是線程安全的,效率低
    ArrayList是線程不安全的,效率高
    共同點:都是數組實現的

    ArrayList和LinkedList的區別
    ArrayList底層是數組結構,查詢和修改快
    LinkedList底層是鏈表結構,增和刪比較快,查詢和修改比較慢
    共同點:都是線程不安全的

    • B:List有三個兒子,
      當查詢多的時候,用ArrayList
      增刪多的時候,用LinkedList
      如果查詢、增刪都多的時候,用ArrayList
package com.wsq.bean;
public class Student {private String name;private int age;public Student() {super();}public Student(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setNaem(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student [naem=" + name + ", age=" + age + "]";}
}
package com.wsq.collection;
import com.wsq.bean.Student;
public class Demo_array {public Demo_array() {}public static void main(String[] args) {//int [] arr = new int [5]; //創建基本數據類型數組Student [] arr = new Student [5];//引用基本數據類型數組arr[0] = new Student("張三",23);//創建一個學生對象,存儲在數組的第一個位置arr[1] = new Student("李四",24);//創建一個學生對象,存儲在數組的第二個位置arr[2] = new Student("王五",25);//創建一個學生對象,存儲在數組的第三個位置for(int i = 0;i<arr.length;i++){System.out.println(arr[i]);}}
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
import com.wsq.bean.Student;
/** ArrayList的父類重寫toString方法,所以*/
public class Demo2_Collection {@SuppressWarnings("unchecked")public static void main(String[] args) {@SuppressWarnings("rawtypes")Collection c = new ArrayList();c.add("a");c.add("b");c.add("c");c.add("d");c.remove("b");          //刪除指定元素System.out.println(c);}public static void demo1(){Collection c = new ArrayList();//父類引用指向子類對象boolean b1 = c.add("abc");     //自動裝箱new Booleanz(ture);boolean b2 = c.add(true);boolean b3 = c.add(100);boolean b4 = c.add(new Student("張三",23));boolean b5 = c.add("abc");System.out.println(b1);System.out.println(b2);System.out.println(b3);System.out.println(b4);System.out.println(b5);System.out.println(c.toString());}
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
import com.wsq.bean.Student;
public class Demo3_Collection {public static void main(String[] args) {//demo1();Collection c = new ArrayList();c.add(new Student("張三",23));//object obj = new student("張三",23);c.add(new Student("李四",24));c.add(new Student("王五",25));c.add(new Student("趙六",26));Object [] arr = c.toArray();//將集合轉換成數組for (int i = 0; i < arr.length; i++) {//System.out.println(arr[i]);Student s = (Student)arr[i];//向下轉型System.out.println(s.getName() + "..." + s.getAge());}}public static void demo1(){Collection c = new ArrayList();c.add("a");c.add("b");c.add("c");c.add("d");Object[] arr = c.toArray();for(int i= 0;i<arr.length;i++){System.out.println(arr[i]);}   }
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Demo4_CollectionAll {public static void main(String[] args) {//demo1();  //demo2();//demo3();Collection c1  = new ArrayList();c1.add("a");c1.add("b");c1.add("c");c1.add("d");    Collection c2   = new ArrayList();c2.add("a");c2.add("b");c2.add("c");c2.add("d");//取交集,如果調用的集合改變就返回true,如果調用的集合不變就返回falseboolean b = c1.retainAll(c2);   //取交集System.out.println(b);System.out.println(c1);}public static void demo1(){Collection c1  = new ArrayList();c1.add("a");c1.add("b");c1.add("c");c1.add("d");Collection c2   = new ArrayList();c2.add("a");c2.add("b");c2.add("c");c2.add("d");//c1.addAll(c2);       //將c2中的每一個元素添加到c1中c1.add(c2);System.out.println(c1);//將c2看成一個對象添加到c1中}public static void demo2(){Collection c1  = new ArrayList();c1.add("a");c1.add("b");c1.add("c");c1.add("d");Collection c2   = new ArrayList();c2.add("a");c2.add("b");c2.add("z");boolean b = c1.removeAll(c2);   //刪除的是交集System.out.println(b);System.out.println(c1);}public static void demo3(){Collection c1  = new ArrayList();c1.add("a");c1.add("b");c1.add("c");c1.add("d");Collection c2   = new ArrayList();c2.add("a");c2.add("b");c2.add("z");boolean b = c1.containsAll(c2);    //判斷調用的集合是否包含傳入的集合System.out.println(b);}
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import com.wsq.bean.Student;
public class Demo5_Iterator {public static void main(String[] args) {Collection c = new ArrayList();c.add(new Student("張三",23));c.add(new Student("李四",24));c.add(new Student("王五",25));c.add(new Student("趙六",26));//獲取迭代器Iterator it = c.iterator();while(it.hasNext()){//System.out.println(it.hasNext());Student s = (Student)it.next();         //向下轉型System.out.println(s.getName() + "..." + s.getAge());}}public static void demo1(){Collection c = new ArrayList();c.add("a");c.add("b");c.add("c");c.add("d");//對集合中的元素迭代(遍歷)Iterator it = c.iterator();/*boolean b1 = it.hasNext();          //判斷集合中是否有元素,有就返回trueObject obj1 = it.next();System.out.println(b1);System.out.println(obj1);boolean b2 = it.hasNext();          //判斷集合中是否有元素,有就返回trueObject obj2 = it.next();System.out.println(b2);System.out.println(obj2);*/while(it.hasNext()){System.out.println(it.next());}}
}
package com.wsq.list;
import java.util.List;
import java.util.ArrayList;
public class Demo1_LIst {public static void main(String[] args) {//demo1();//demo2();//demo3();//demo4();List list = new ArrayList();list.add("a");list.add("b");list.add("c");                      //index<=size并且index>=0都會報異常list.add("d");list.set(1, "z");                   //將指定位置的元素修改System.out.println(list);}   public static void demo1(){List list = new ArrayList();list.add("a");list.add("b");list.add("c");                      //index<=size并且index>=0都會報異常list.add("d");list.add(4,"f");//list.add(1,"e");//list.add(10,"z");                  //當儲存時,不存在的索引時,就會出現索引越界異常System.out.println(list);}public static void demo2(){List list = new ArrayList();list.add("a");list.add("b");list.add("c");                      //index<=size并且index>=0都會報異常list.add("d");Object obj = list.remove(1);        //通過索引刪除元素,將被刪除的元素返回System.out.println(obj);System.out.println(list); }public static void demo3(){List list = new ArrayList();list.add(111);list.add(222);list.add(333);list.remove(111);         //刪除的時候不會自動裝箱,把111當成索引 System.out.println(list); }public static void demo4(){List list = new ArrayList();list.add("a");list.add("b");list.add("c");                      //index<=size并且index>=0都會報異常list.add("d");  /*Object obj1 = list.get(2);System.out.println(obj1);*///通過索引遍歷List集合for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}}
package com.wsq.list;
import java.util.Enumeration;
import java.util.Vector;
public class Demo2_Vector {public static void main(String[] args) {Vector wsq = new Vector();wsq.addElement("a");wsq.addElement("b");wsq.addElement("c");wsq.addElement("d");Enumeration yy = wsq.elements();while(yy.hasMoreElements()){System.out.println(yy.nextElement());}}
}
package com.wsq.list;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Demo4_ListIterator {public static void main(String[] args) {List list = new ArrayList();            //Object obj = new String();list.add("a");list.add("b");list.add("world");list.add("d");list.add("e");ListIterator lit = list.listIterator();                 //獲取迭代器while(lit.hasNext()){   System.out.println(lit.next());                     //獲取元素并將指針向后移動}System.out.println("-------------------------");while(lit.hasPrevious()){System.out.println(lit.previous());                 //獲取元素并將指針向前移動}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/380052.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/380052.shtml
英文地址,請注明出處:http://en.pswp.cn/news/380052.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一步一步學pwntools(適合新手)

序 pwntools是一個二進制利用框架。官方文檔提供了詳細的api規范。然而目前并沒有一個很好的新手教程。因此我用了我過去的幾篇writeup。由于本文只是用來介紹pwntools使用方法&#xff0c;我不會過于詳細的講解各種二進制漏洞攻擊技術。 Pwntools的“Hello World” 棧溢出無…

關于J2EE中死鎖問題的研究(1)

大多數重要的應用程序都涉及高度并發性和多個抽象層。并發性與資源爭用有關&#xff0c;并且是導致死鎖問題增多的因素之一。多個抽象層使隔離并修復死鎖環境的工作變得更加困難。 通常&#xff0c;當同時執行兩個或兩個以上的線程時&#xff0c;如果每個線程都占有一個資源并請…

python變量分配內存_Python | 聲明任何變量而不分配任何值

python變量分配內存Since, Python is a dynamic programming language so there is no need to declare such type of variable, it automatically declares when first time value assign in it. 由于Python是一種動態編程語言&#xff0c;因此無需聲明此類變量&#xff0c;它…

UVA 10004 - Bicoloring

模擬染色&#xff0c;因為只有兩種顏色&#xff0c;所以分別用 0、 1 代表這兩種顏色&#xff0c;然后從0開始深搜&#xff0c;如果 每個點都能染上色&#xff0c;且相鄰兩點的顏色不同&#xff0c;則符合要求。 #include<stdio.h>#include<string.h>#define MAXN …

標志寄存器:CF、PF、AF、ZF、SF、TF、DF、OF

注&#xff1a;下面說到的標志寄存器都是縮寫&#xff0c;C就是CF&#xff0c;其他也一樣 標志寄存器&#xff1a;C、P、A、Z、S、T、D、O的內容只會是0或1&#xff0c;0表示假&#xff0c;1表示真 O&#xff1a;溢出標志 一個寄存器如果存放的值超過所能表示的范圍&#xf…

揭秘:銷售人員26個致命弱點

銷售人員有許多積極的態度需要學習&#xff0c; 同時也有許多不良的習慣應該避免&#xff0c;以免影響個性及專業能力。仔細看看這些缺點&#xff0c;反省你自己&#xff0c;還需要改善的畫&#xff0c;直到你給自己一百分為止。找一位深知你的好 友&#xff0c;讓他誠實地給你…

Java——集合(練習題)

例題1&#xff1a;產生10個1~20之間的隨機數&#xff0c;要求隨機數不能重復 import java.util.HashSet; import java.util.Random; public class Test1 {/*** 產生10個1~20之間的隨機數&#xff0c;要求隨機數不能重復* * 分析&#xff1a;* 1,有Random類創建隨機數對象* 2&a…

模塊化 組件化 工程化_軟件工程中的模塊和軟件組件

模塊化 組件化 工程化The module in software is a small part of the software that is responsible for performing any kind of functionality. Sometimes, the term sub-program is also used to refer to the term module. 軟件中的模塊是軟件的一小部分&#xff0c;負責…

Firefox2狂占CPU解決辦法

https://images.cnblogs.com/cnblogs_com/Tisty/138006/o_firefox3.jpg 看了一下&#xff0c;不知道 "jpeg_free_large" 是干啥的&#xff0c;遂用 "Firefox jpeg_free_large" Google 一下&#xff0c;出來的一堆東西里有帖子說可能和 Apple 的 QuickTime …

PUSHAD和POPAD,以及PUSHA和POPA

PUSHAD PUSHAD也叫保護現場&#xff0c;就是把我們的寄存器壓入棧中 pushad是把eax&#xff0c;ecx&#xff0c;edx&#xff0c;ebx&#xff0c;esp、ebp&#xff0c;esi&#xff0c;edi依次壓入棧中&#xff0c;ESP會減少32&#xff0c;相當于&#xff1a; push eax push ec…

Java——n個數的全排列

例題&#xff1a; 輸入一串字符串&#xff0c;將該字符串中的字符元素進行全排列&#xff0c;然后&#xff0c;一串輸出結果。 例如&#xff1a; 輸入&#xff1a; ABCD 輸出&#xff1a; ABCD ABDC ACBD ACDB ADBC ADCB BACD BADC BCAD BCDA BDAC BDCA CABD CADB CBAD CBDA…

一段個性化stringgrid的代碼

需要注意的是 該段程序使用了 canvas。 procedure TW_CkbTaiZhang.KhLstDrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState);begin if ARowkhlst.Row then with khlst.Canvas do //畫 cell 的邊框 begin Pen.Color : $00ff0000; …

dp 扔雞蛋_使用動態編程(DP)的雞蛋掉落問題

dp 扔雞蛋Problem statement: You are given N floor and K eggs. You have to minimize the number of times you have to drop the eggs to find the critical floor where critical floor means the floor beyond which eggs start to break. Assumptions of the problem: 問…

MOVSX和MOVZX

MOVSX 先符號擴展,再傳送 格式&#xff1a; MOVSX 操作數A &#xff0c;操作數B //操作數B的空間小于A比如說我們使用命令&#xff1a; movsx eax&#xff0c;bxbx是16位&#xff0c;eax是32位&#xff0c;傳值過程&#xff1a; 先用bx的符號位把eax高16填滿&#xff0c;b…

統計學習以及支持向量機的國內外基本比較重要的書

1、支持向量機導論&#xff0c;此書乃是SVM方面的經典著作&#xff0c; 該書的作者也是近年來SVM、kernel methods學術圈內的活躍學者&#xff0c;對于這些領域均有過重要的貢獻。這本書從“線性機器、核方法、統計學習理論、凸優化”四個方面揭示了SVM的內在機理 --利用核…

Java——集合(TreeSet)

package com.wsq.set; //這里進行調用Person()方法&#xff0c;要進行導包 import java.util.TreeSet; import com.wsq.bean.Person; public class Demo3_TreeSet { /*** TreeSet集合是用來對元素進行排序的&#xff0c;同樣它也可以保證元素的唯一* 當compareTo()方法返…

setmonth_日期setMonth()方法以及JavaScript中的示例

setmonthJavaScript日期setMonth()方法 (JavaScript Date setMonth() method) setMonth() method is a Date class method, it is used to set the month to the Date object with a valid month value (between 0 to 11. 0 for January, 1 for February and so on). setMonth(…

LEA與XCHG

LEA 格式&#xff1a; LEA 通用寄存器 內存地址功能&#xff1a;取地址命令 將內存地址賦值給寄存器 lea eax,dword ptr ds:[ecx0x16]dword 雙字 就是四個字節ptr pointer縮寫 即指針ds 數據段版寄存器[]里的數據是一個地址值&#xff0c;這個地址指向一個雙字型數據 將dwo…

分域名優化的時候要考慮備選IP的問題

我們在需要下載很多內容的時候&#xff0c;很容易想到做分域名的并發下載&#xff0c;給原來的服務器多分幾個域名&#xff0c;因為分不同的域名可能可以在瀏覽器中分到更多的下載進程&#xff0c;提高下載速度。 但是在做網絡應用的時候&#xff0c;我們的一個域名下面有的時候…

面試題-ASP 與 ASP.Net的區別?

比較簡潔的回答&#xff1a; 1.開發語言不同&#xff0c;ASP局限于用腳本語言來開發&#xff0c;而ASP.Net可以使用C#,VB.C等來開發。 2.運行機制不同&#xff0c;ASP是解釋運行的&#xff0c;執行效率較低。ASP.Net是編譯性的編程框架。 3.開發方式不同&#xff0c;ASP里前臺H…