集合List内容

集合List内容

这次我们学习的主要内容为:集合框架 List

  集合框架介绍

  List集合与数组的区别:

不同点:1> 数组的长度在使用前必须确定,一旦确定不能改变。而List集合长度可变,无须定义。

2>  数组中必须存放同一数据类型的数据,List集合中可以存放不同类型的数据。

数组举例:String[]  name=new  String[5]

 List集合的常用方法

返回类型

方法名称

说明

boolean

add(Object obj)

加入元素,返回是否添加成功

void

clear()

清除集合中的元素

boolean

contains(Object obj)

查找集合中是否存在传入的元素

Object

getint  index

获取指定位置的元素

boolean

isEmpty()

判断集合是否为空

Object

Removeint index

删除指定位置的元素,并返回该元素

int

size()

获取集合的大小

Object[]

toArray()

将集合转换成数组

注意:保存基本类型时用到了装箱拆箱;保存对象应重写equals方法。

数组操作:

package com.huizhong;

 

public class ArrayDemo {

    public static void main(String[] args) {

       String[]  array=new  String[3];

       for (int i = 0; i < 3; i++) {

           array[i]="hello";

          

       }

       String  str=array[0];

       System.out.println(str);

    }

}

List集合:

package com.huizhong;

 

import java.util.*;

public class ListDemo {

    public static void main(String[] args) {

       ArrayList  list=new  ArrayList();

       for (int i = 0; i < 3; i++) {

           list.add("hello");

   

       String  str=(String) list.get(0);

       System.out.println(str);

       }

      

    }

}

未重写equals

package com.huizhong;

 

import  java.util.*;

public class Demo {

    public static void main(String[] args) {

       ArrayList  list=new  ArrayList();

       list.add(new  Student("tom",15));

       list.add(new  Student("carry",35));

       list.add(new  Student("hamoey",20));

       System.out.println(list);

    }

}

 

 

package com.huizhong;

 

class Student {

       String  stuName;

       int   stuAge;

       public  Student(String  stuName,int   stuAge){

           this.stuName=stuName;

           this.stuAge=stuAge;

       }

   

}

输出结果:

重写equals后:

package com.huizhong;

 

import  java.util.*;

public class Demo {

    public static void main(String[] args) {

       ArrayList  list=new  ArrayList();

       list.add(new  Student("tom",15));

       list.add(new  Student("carry",35));

       list.add(new  Student("hamoey",20));

       System.out.println(list);

    }

}

 

package com.huizhong;

 

class Student {

       String  stuName;

       int   stuAge;

       public  Student(String  stuName,int   stuAge){

           this.stuName=stuName;

           this.stuAge=stuAge;

       }

   

}

输出结果:

 List集合实际上包含了3个常用的集合类,即ArrayListVectorLinkedList

ArrayList采用数组保存元素,意味着当大量添加元素,数组空间不足时,依然需要通过新建数组,内存复制的方式来增加容量,效率较低;而当进行对数组进行插入,删除操作时,又会进行循环移位操作,效率也较低;只有进行按下标查询时(get方法),使用数组效率很高。

VectorArrayList的内部实现相似,Vector设计为线程安全,ArrayList设计为非线程安全。为了保证线程安全,Vector在性能方面稍逊于ArrayList,目前我们编写的都是单线程应用程序,应选择使用ArrayList

ArrayListLinkedList均设计为非线程安全,ArrayList内部采用数组实现(与Vector相同),LinkedList内部采用链表结构实现。

LinkedList采用链表保存元素,在添加元素时只需要进行一次简单的内存分配即可,效率较高;进行插入,删除操作时,只需对链表中相邻的元素进行修改即可,效率也很高;但进行按下标查询时,需要对链表进行遍历,效率较低。

学习了这章的内容后,我们就会深有体会,在存多个用户的信息时给我们提供了很多的便利,比数组好用多了,因此我们要灵活的掌握它,我们学习时要多总结,多比较,理解其特性,将他学会学懂.

原文地址:https://www.cnblogs.com/originate918/p/6197474.html