List集合的 使用

java.util包提供了一些结合类,这些集合类又被称为容器。

一、集合与数组的比较

集合类:长度是可变的  存放对象的引用

数组  :长度是固定的  存放基本数据类型

二、常用的集合类List集合,Set集合,Map集合。其中List与Set继承了Collection接口,各接口提供了不同的实现类。

2.1  Colection接口是层次结构中的根接口,通常不直接使用。

Colection接口常用方法:add()添加对象,  remove()移除指定对象,  boolean isEmpty()判断是否为空,  iterator()迭代器用于遍历集合,  int size()获取集合中元素的个数。

例:Collection<String> list new ArrayList<>();  //实例化集合类对象

list.add("a");  list.add("b");  list.add("c");

Iterator<String> it=list.iterator();   //为list创建迭代器

while(it.hasNext()){

String str=(String) it.next();   //获取集合中的元素

System.out.println(str);

}

2.2  List集合,包含List接口以及List接口的所有实现类。Collection--->List(List接口继承了Collection接口),包含所有父接口方法。

此外:List接口还定义了两个重要方法:get(int index):获得指定索引位置的元素.  set(int index,Object obj):将集合中指定索引的对象修改为指定的对象。

List接口的实现类:1、ArrayList 类实现了可变数组,允许保存所有元素,包括null。 可以快速随机访问 ,指定索引处插入、删除对象速度慢

2、LinkedList类采用链表结构保存对象。  删除和插入对象速度快。 随机访问集合对象的效率较低。

2.2.1 ArrayList

(1)

ArrayList List = new ArrayList();
for( int i=0;i<10;i++ ) //给数组增加元素
List.Add(i); 
List.RemoveAt(5);//将第6个元素移除

(2)构造方法

ArrayList提供了三个构造器:
public ArrayList();
默认的构造器,将会以默认(16)的大小来初始化内部的数组
public ArrayList(ICollection);
用一个ICollection对象来构造,并将该集合的元素添加到ArrayList
public ArrayList(int);
用指定的大小来初始化内部的数组

(3)属性

1.Count属性:当前元素数量    2.Capacity属性:可包含的最大数量

(4)方法举例

Add方法用于添加一个元素到当前列表的末尾
AddRange方法用于添加一批元素到当前列表的末尾
Remove方法用于删除一个元素,通过元素本身的引用来删除
RemoveAt方法用于删除一个元素,通过索引值来删除
RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除
Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动
InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动

Clear方法用于清除现有所有的元素
Contains方法用来查找某个对象在不在列表之中

TrimSize方法
    这个方法用于将ArrayList固定到实际元素的大小,当动态数组元素确定不在添加的时候,可以调用这个方法来释放空余的内存。
ToArray方法
    这个方法把ArrayList的元素Copy到一个新的数组中。

(5)ArrayList的遍历方法

//索引法:

for(int i=0;i<list.size();i++){ list.get(i) ;}

//for -each方法

for(Object obj:list){  System.out.println(obj); or System.out.println(obj.properity)}

//迭代器法:

Iterator it= list.iterator();

while(it.hasNext()){  System.out.println(it.next());  }

//Object 数组法

Object  array[];

array=list.toArray[];

for(int i=0;i<array.length;i++){ System.out.println(array[i]); }

(6)ArrayList<>泛型的使用

泛型可以避免重复的装箱和拆箱

1、List<Student> studentList=new ArrayList<Student>(); 
添家Student对象 
studentList.add(stu1); 
studentList.add(stu2); 
遍历

for(Student stu:StudentList){ 
stu就代表每一个学生的实体了 不需要类型转换便可得到 
}
2、List studentList=new ArrayList(); 
studentList.add(stu1); 
studentList.add(stu2); 
遍历集合需要强制转换
for(Object stu:studentList){ 
Student student=(Student)stu;//这里需要类型转换 
}

时间: 2024-11-08 18:43:17

List集合的 使用的相关文章

数组、字符串、集合

数组与集合的转换.数组与字符串的转换 ========数组变集合 String[] arr = {"abc","cc","kkkk"}; //把数组变成list集合有什么好处? /* 可以使用集合的思想和方法来操作数组中的元素. 注意:将数组变成集合,不可以使用集合的增删方法. 因为数组的长度是固定. contains. get indexOf() subList(); 如果你增删.那么会产生UnsupportedOperationExcepti

C#语言中数组和集合

数组.集合→用于储存多个同类型的数据数组 定长→用于保存固定数量的数据 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现 占用内存少 便利速度快集合 不定长→保存的数据数量,可以在程序的执行过程中,发生变化 占用内存多 便利速度慢课时六:数组和集合 数组.集合→用于储存多个同类型的数据 数组 定长→用于保存固定数量的数据 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现 占用内存少 便利速度快 集合 不定长→保存的数据数

通过反射了解集合泛型的本质

通过反射了解集合泛型的本质 import java.lang.reflect.Method; import java.util.ArrayList; /** * 通过反射了解集合泛型的本质 * @author shm * */ public class MethodDemo02 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("hello"); list.add(

Java 之集合

collection(单列集合) List(有序,可重复) ArrayList     底层数据结构是数组,查询快,增删慢,线程不安全,效率高 Vector     底层数据结构是数组,查询快,增删慢,线程安全,效率低 LinkedList  底层数据结构是链表,查询慢,增删快,线程不安全,效率高 Set(无序,唯一) HashSet   底层数据结构是哈希表,依赖hashCode()和equals() 执行顺序:判断hashCode()是否相同,相同继续执行equals(),返回true不添加

集合和三元运算符

一.三元运算符 如下判断可以使用三元运算更方便的实现: a = 1b = 2 if a > 1: c = aelse: c = b 和下面是一样的: a = 1b = 2#下面这个c = a if a>1 else b 如下两种方法也是一样的:方式一: s=[]nums = list(range(1,11))for i in nums: if i%2==0: s.append(i)print(s)方式二:ss = [i for i in nums if i%2==0]print(ss)#这两种

集合函数 day4

1.集合 通过set强制转换,或者直接定义 1 nums = [0, 2, 4, 6, 8]#两种格式,带大括号与带中括号的 2 print(type(nums)) 3 aa = {0, 8, 2, 4, 6}#需要注意与字典的区别,字典是有分号的 2.交集

js算法集合(一) 水仙花数 及拓展(自幂数的判断)

js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,希望能对大家有所帮助. 1.验证一个数是否为水仙花数 ①要写水仙花数的算法,我们首先来了解一下什么是水仙花数,水仙花数是指一个 3位正整数 ,它的每个位上的数字的 3次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153): ②了解了什么是水仙花数我们就开始分析该怎么下手.通过定义来看

笔记:多线程-集合

阻塞队列(BlockingQueue) 当试图向队列添加元素而队列已满,或是想从队列移除元素而队列为空的时候,阻塞队列导致线程阻塞,阻塞队列接口定义如下,他继承Queue<E>接口: public interface BlockingQueue<E> extends Queue<E> { ????/** ???? * 添加一个元素,如果队列满,则抛出 IllegalStateException异常 ???? */ ????????boolean add(E e); ??

SQL入门之集合操作

尽管可以在与数据库交互时一次只处理一行数据,但实际上关系数据库通常处理的都是数据的集合.在数学上常用的集合操作为:并(union),交(intersect),差(except).对于集合运算必须满足下面两个要求: 两个数据集合必须具有同样数目的列 连个数据集中对应列的数据类型必须是一样的(或者服务器能够将其中一种类型转换为另一种类型) SQL语言中每个集合操作符包含两种修饰:一个包含重复项,另一个去除了重复项(但不一定去除了所有重复项). 0.union操作符 union和union all操作

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度