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.mzph.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…