java中集合类中Collection接口中的List接口的常用方法熟悉

简介: 1:集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器。 2:区别集合类和数组。(1)数组的长度是固定的,集合的长度是可变的。(2)数组是用来存放基本数据类型的,集合是用来存放对象的引用。 3 : 常用的集合有List集合,Set集合,Map集合。其中List集合和Set集合实现Collection接口。 4:Collection接口是层次结构中的根接
1:集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器。

2:区别集合类和数组。(1)数组的长度是固定的,集合的长度是可变的。(2)数组是用来存放基本数据类型的,集合是用来存放对象的引用。

3 : 常用的集合有List集合,Set集合,Map集合。其中List集合和Set集合实现Collection接口。

4:Collection接口是层次结构中的根接口,构成Collection的单位,被称为元素。Collection接口通常不能直接使用,但是该接口提供了添加和删除元素的,管理数据的方法。由于List接口和Set接口都实现了Collection接口,因此这些方法对List集合和Set集合是通用的。

5:List集合是列表类型,以线性方式存储对象,因此可以通过对象的索引来操作对象。

6:List集合中的add(in index,Object obj)方法,用来向集合中的指定索引位置添加对象,集合的索引位置从0开始,其他对象的索引位置相对向后移动一位。

7:List集合中的set(int index,E element)方法用指定的元素替换列表中的指定位置的元素,返回以前在指定位置的元素。

案例如下,创建集合对象,并向集合中添加元素,通过Set方法修改集合中的元素,再通过add()方法向集合中添加元素,都是通过迭代器遍历集合元素的。

 

 1 package com.ning;
 2 
 3 import java.util.*;
 4 
 5 /**
 6  * 
 7  * @author biexiansheng
 8  *
 9  */
10 public class Demo {
11 
12     public static void main(String[] args) {
13         String a="A",b="B",c="C",d="D",e="E";//定义要插入集合的字符串对象
14         List<String> list=new LinkedList<String>();//创建List集合
15         list.add(a);//向集合中添加元素
16         list.add(b);
17         list.add(c);
18         Iterator<String> iter=list.iterator();//创建集合的迭代器
19         System.out.println("修改后 前集合 中的元素是:");
20         while(iter.hasNext()){
21             System.out.print(iter.next()+" ");
22         }
23         list.set(0,e);//将索引位置为0的对象修改为对象e
24         list.set(2,d);//将索引位置为2的对象修改为对象d
25         Iterator<String> it=list.iterator();//创建将集合对象修改后的迭代器对象
26         System.out.println();
27         System.out.println("修改后的集合中的元素是:");
28         while(it.hasNext()){//循环获取集合中的元素
29             System.out.print(it.next()+" ");
30         }
31     
32         
33     }
34     
35 }

 

 


 

 1 package com.ning;
 2 
 3 import java.util.*;
 4 
 5 public class Demo01 {
 6 
 7     public static void main(String[] args) {
 8         // TODO Auto-generated method stub
 9         String a="A",b="B",c="C",d="D",e="E",apple="apple";//要添加到集合中的对象
10         List<String> list=new ArrayList<String>();//创建List集合对象
11         list.add(a);//对象a的索引位置为0
12         list.add(apple);//对象apple的索引位置为1
13         list.add(b);
14         list.add(apple);
15         list.add(c);
16         list.add(apple);
17         list.add(d);
18         list.remove(1);//remove(int index)用于移除集合中指定索引位置的对象
19         System.out.println("ArrayList集合中的元素:"+list);
20         System.out.println("apple第一次出现的索引位置:"+list.indexOf(apple));
21         System.out.println("apple最后一次出现的索引位置:"+list.lastIndexOf(apple));
22         System.out.println("b第一次出现的索引位置:"+list.indexOf(b));
23         System.out.println("b最后一次出现的索引位置:"+list.lastIndexOf(b));
24         System.out.println("***********************************");
25         //System.out.println("get()获得指定索引位置的对象:"+list.get(0));
26         
27         
28     }
29 
30 }

此两句话的使用结果对比显示:

list.remove(1);//remove(int index)用于移除集合中指定索引位置的对象

System.out.println("get()获得指定索引位置的对象:"+list.get(0));

 

 

 


 

1:要使用List集合,通常情况下需要声明为List类型,然后通过List接口的实现类来对集合进行实例化

2:List集合的实现类常用的有ArrayList与LinkedList

3:ArrayList类,该类实现了可变的数组,允许所有元素,包括null,可以根据索引位置对集合进行快速的随机访问。缺点是向指定的索引位置插入对象或者删除对象的速度比较慢。List<String> list=new ArrayList<String>();

4:LinkedList类,该类采用链表结构保存对象,这种结构的优点是便于向集合中插入或者删除对象,经常需要向集合中插入,删除对象时,使用LinkedList类实现的List集合的效率较高,但对于随机访问集合中的对象,使用LinkedList类实现List集合的效率比较慢

List<String> list=new LinkedList<String>();

5:使用List集合时通常声明为List类型,可通过不同的实现类来实例化集合。

 

 1 package com.ning;
 2 
 3 import java.util.*;
 4 
 5 public class Demo04 {
 6 
 7     public static void main(String[] args) {
 8         // TODO Auto-generated method stub
 9         List list=new ArrayList();//创建集合对象
10         int i=(int)(Math.random()*(list.size()-1));//获得0-2之间的随机数
11         list.add("a");//向集合中添加元素
12         list.add("b");
13         list.add("c");
14         System.out.println("随机获取数组中的元素:"+list.get(i));//
15         list.remove(2);//将指定索引位置的元素从集合中移除
16         System.out.println("将索引是'2'的元素从数组中移除后,数组中的元素是:");
17         for(int j=0;j<list.size();j++){//循环遍历数组
18             System.out.print(list.get(j)+" ");
19         }
20         
21         
22     }
23 
24 }

 

 

 

 


 

 1 package day13;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.ListIterator;
 6 
 7 public class Demo03 {
 8 
 9     public static void main(String[] args) {
10         // TODO Auto-generated method stub
11         List list=new ArrayList();
12         
13         list.add("a");
14         list.add("b");
15         list.add("c");
16         list.add("d");
17         System.out.print(list+" ");
18         System.out.println("集合的长度是:"+list.size());
19         //list.remove("a");
20         System.out.println();
21         System.out.println("删除后集合的长度是:"+list.size());
22         System.out.print(list+" ");
23         System.out.println();
24         for(int i=0;i<list.size();i++){
25             System.out.print(list.get(i)+" ");
26         }
27         System.out.println();
28         System.out.println("***********************");
29         ListIterator it=list.listIterator();
30         while(it.hasNext()){
31             String str=(String)it.next();
32             if("c".equals(str)){
33                 it.add("aaa");
34             }
35         }
36         System.out.println(list);
37         
38     }
39 
40 }

此案例的主要是说了一下listIterator的用法,因为好多书上写的listIterator的解释很生硬。用来获得一个包所有对象的ListIterator列表迭代器。其实这个方法的用法就是在迭代的时候可以进行修改List集合。不然报这个错误。java.util.ConcurrentModificationException

当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

 


 

至此,Collection接口下的List接口学习就差不多了,详细的还请自己下去参考资料,勤加练习,熟练应用和掌握。

 

目录
相关文章
|
5月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
200 11
|
4月前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
266 0
|
6月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
491 23
|
6月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。
|
Java
JAVA方法的定义
JAVA方法的定义
261 0
|
11月前
|
存储 JSON Java
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
265 25
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
200 1
|
存储 Java
Java数组与带参数方法:定义、调用及实践
Java数组与带参数方法:定义、调用及实践
254 1
|
存储 Java
Java中带返回值方法的定义与调用技术
Java中带返回值方法的定义与调用技术
322 1
|
Java 编译器
探究Java【方法的定义及使用】----【简单面试题】
探究Java【方法的定义及使用】----【简单面试题】
205 2