java中集合类中Collection接口中的List接口的常用方法熟悉
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()方法向集合中添加元素,都是通过迭代器遍历集合元素的。
package com.ning; import java.util.*; /**
*
* @author biexiansheng
*
*/
public class Demo { public static void main(String[] args) {
String a="A",b="B",c="C",d="D",e="E";//定义要插入集合的字符串对象
List<String> list=new LinkedList<String>();//创建List集合
list.add(a);//向集合中添加元素
list.add(b);
list.add(c);
Iterator<String> iter=list.iterator();//创建集合的迭代器
System.out.println("修改后 前集合 中的元素是:");
while(iter.hasNext()){
System.out.print(iter.next()+" ");
}
list.set(0,e);//将索引位置为0的对象修改为对象e
list.set(2,d);//将索引位置为2的对象修改为对象d
Iterator<String> it=list.iterator();//创建将集合对象修改后的迭代器对象
System.out.println();
System.out.println("修改后的集合中的元素是:");
while(it.hasNext()){//循环获取集合中的元素
System.out.print(it.next()+" ");
} } }
package com.ning; import java.util.*; public class Demo01 { public static void main(String[] args) {
// TODO Auto-generated method stub
String a="A",b="B",c="C",d="D",e="E",apple="apple";//要添加到集合中的对象
List<String> list=new ArrayList<String>();//创建List集合对象
list.add(a);//对象a的索引位置为0
list.add(apple);//对象apple的索引位置为1
list.add(b);
list.add(apple);
list.add(c);
list.add(apple);
list.add(d);
list.remove(1);//remove(int index)用于移除集合中指定索引位置的对象
System.out.println("ArrayList集合中的元素:"+list);
System.out.println("apple第一次出现的索引位置:"+list.indexOf(apple));
System.out.println("apple最后一次出现的索引位置:"+list.lastIndexOf(apple));
System.out.println("b第一次出现的索引位置:"+list.indexOf(b));
System.out.println("b最后一次出现的索引位置:"+list.lastIndexOf(b));
System.out.println("***********************************");
//System.out.println("get()获得指定索引位置的对象:"+list.get(0)); } }
此两句话的使用结果对比显示:
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类型,可通过不同的实现类来实例化集合。
package com.ning; import java.util.*; public class Demo04 { public static void main(String[] args) {
// TODO Auto-generated method stub
List list=new ArrayList();//创建集合对象
int i=(int)(Math.random()*(list.size()-1));//获得0-2之间的随机数
list.add("a");//向集合中添加元素
list.add("b");
list.add("c");
System.out.println("随机获取数组中的元素:"+list.get(i));//
list.remove(2);//将指定索引位置的元素从集合中移除
System.out.println("将索引是'2'的元素从数组中移除后,数组中的元素是:");
for(int j=0;j<list.size();j++){//循环遍历数组
System.out.print(list.get(j)+" ");
} } }
package day13; import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator; public class Demo03 { public static void main(String[] args) {
// TODO Auto-generated method stub
List list=new ArrayList(); list.add("a");
list.add("b");
list.add("c");
list.add("d");
System.out.print(list+" ");
System.out.println("集合的长度是:"+list.size());
//list.remove("a");
System.out.println();
System.out.println("删除后集合的长度是:"+list.size());
System.out.print(list+" ");
System.out.println();
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+" ");
}
System.out.println();
System.out.println("***********************");
ListIterator it=list.listIterator();
while(it.hasNext()){
String str=(String)it.next();
if("c".equals(str)){
it.add("aaa");
}
}
System.out.println(list); } }
此案例的主要是说了一下listIterator的用法,因为好多书上写的listIterator的解释很生硬。用来获得一个包所有对象的ListIterator列表迭代器。其实这个方法的用法就是在迭代的时候可以进行修改List集合。不然报这个错误。java.util.ConcurrentModificationException
当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
至此,Collection接口下的List接口学习就差不多了,详细的还请自己下去参考资料,勤加练习,熟练应用和掌握。
java中集合类中Collection接口中的List接口的常用方法熟悉的更多相关文章
- java中集合类中Collection接口中的Set接口的常用方法熟悉
1:Set集合由Set接口和Set接口的实现类组成,Set接口继承了Collection接口,因为包含Collection接口的所有方法. 2:由于Set接口中不允许存在重复值,因此可以使用Set集合 ...
- java中集合类中Collection接口中的Map接口的常用方法熟悉
1:Map接口提供了将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.Map接口中同样提供了集合的常用方法. 2:由于Map集合中的元素是通过key,value,进行存储的,要 ...
- Java 8 新特性:3-函数(Function)接口
(原) 以前,在创建泛型时,是这么写的: List<String> list = new ArrayList<String>(); 现在,可以这么写了: List<Str ...
- 首先java中集合类主要有两大分支
本文仅分析部分原理和集合类的特点,不分析源码,旨在对java的集合类有一个整体的认识,理解各个不同类的关联和区别,让大家在不同的环境下学会选择不同的类来处理. Java中的集合类包含的内容很多而且很重 ...
- Java中的集合Collection
集合是什么? Java集合类存放于 java.util 包中,是一个用来存放对象的容器. 注意:①.集合只能存放对象.比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类 ...
- Java中的集合Collection、Iterator和Foreach用法(一)
1.Java集合概述 在编程中,常常需要集中存放多个数据.当然我们可以使用数组来保存多个对象.但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数 ...
- Java Map 集合类在selenium自动化测试设计中的应用
我们在设计自动化测试用例的时候,往往很多工作是在处理测试的数据. 测试数据无论用Excel 文件, XML文件或者任何一种形式测存储方式,都会设计到参数化以及我们对数据的操作. 这个时候,我们会用到以 ...
- Java集合类中的哈希总结
JAVA集合类中的哈希总结 目 录 1.哈希表 2.Hashtable.HashMap.ConcurrentHashMap.LinkedHashMap.TreeMap区别 3.Hashtable.Ha ...
- idea中使用scala运行spark出现Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class
idea中使用scala运行spark出现: Exception in thread "main" java.lang.NoClassDefFoundError: scala/co ...
随机推荐
- iOS APP可执行文件的组成
iOS APP编译后,除了一些资源文件,剩下的就是一个可执行文件,有时候项目大了,引入的库多了,可执行文件很大,想知道这个可执行文件的构成是怎样,里面的内容都是些什么,哪些库占用空间较高,可以用以下方 ...
- 【历史】JavaScript和Java没啥关系!————JavaScript简史
文章的开始先上张图: 图片拍摄自北京图书大厦,代表着现在国内应该是绝大部分书店的现状--Javascript书籍放在Java类当中.甚至很多业内人也一直认为Javascript是Java语言在浏览器内 ...
- shell脚本生成限定范围的随机数
#!/bin/bash +)) 这串代码实现了随机生成从1~50之间是数 这串代码特别简单,就是利用RANDOM这个随机数生成器进行取余就能够实现,至于为什么取余时需要+1是因为在取余时如果被整除那么 ...
- js判断图片是否加载完成
var img = new Image(); //新建一个图片对象:img.src = ...; //图片地址是你准备要加载的地址:if(img.complete){ //表示图片已经加载完成}
- PHP用户注册与登录【1】
需求分析 主要功能分为 用户注册.用户登录.用户退出.用户中心 四个部分. 用户注册 用户注册主要功能有: 注册信息表单填写界面 javascript 脚本初步检测用户输入的注册信息. 注册处理模块检 ...
- 导航菜单跳转后,新页面上菜单CSS选定
<div class="menu"> <ul> <li><a href="#" title="网站首页&qu ...
- HDU 2087 KMP模板题
1.HDU 2087 2.题意:一个主串,一个子串,求子串在主串里出现了几次. 3.总结:看了题解,还是不太懂.. //#include<iostream>#include<cmat ...
- 使用 pod install 还是 pod update ?
翻译自:https://guides.cocoapods.org/using/pod-install-vs-update.html 介绍: 许多人开始使用CocodPods的时候认为pod insta ...
- angluar去掉url中#
众所周知,angular项目中路由机制会在地址栏加一个#来实现各个页面的切换,虽然url中有个#号也无伤大雅,但每次看到多一个这个东西总是不舒服(我不是强迫证啊),趁着项目间隙还是决定把它去掉. 去谷 ...
- (转)为什么需要正则表达式 by 王珢
为什么需要正则表达式 by 王垠 学习Unix最开头,大家都学过正则表达式(regexp).可是有没有人考虑过我们为什么需要正则表达式? 正则表达式本来的初衷是用来从无结构的字符串中提取信息,殊不知这 ...