java程序员从笨鸟到菜鸟之(二十三)集合之List接口
发布日期:2021-05-08 04:34:43 浏览次数:12 分类:精选文章

本文共 6127 字,大约阅读时间需要 20 分钟。

List集合(接口)

特点:1 是一个有序的集合(存储元素和取出元素是一致的!----先进先出)

            2 该集合中的元素是可以重复

既然是接口:通多接口多态创建对象

那么今天就在了解一下List接口

实例1   遍历集合

package org.westos_01;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * 用List集合存储字符串类型的元素并遍历---迭代器遍历 * List集合是一个有序的集合(存储元素和取出元素是一致的!) * 该集合中的元素是可以重复的,List也有iteration()方法 * 说明:public interface List extends Collection * * @author Orange */public class ListDemo2 {		public static void main(String[] args) {		//创建List集合对象		List list = new ArrayList() ;				//给集合中添加元素		list.add("hello") ;		list.add("world") ;		list.add("java") ;		list.add("java") ;		list.add("javaweb") ;		list.add("world") ;				//获取迭代器		Iterator it = list.iterator() ;		while(it.hasNext()){			String s = (String)it.next() ;			System.out.println(s);		}	}}

List集合的特有成员方法

   添加功能
   void add(int index, Object element)
            功能:在列表的指定位置(索引)插入指定元素
   删除功能
   Object remove(int index)
             功能:移除列表中指定位置的元素,返回被删除的元素
  获取功能
   ListIterator listIterator()
             功能:列表迭代器---List集合的专有遍历方式
   Object get(int index)
             功能:返回列表中指定位置的元素
   替换功能
   set(int index,Object element)
              功能:用指定元素替换列表中指定位置的元素
  实例2

package org.westos_02;import java.util.ArrayList;import java.util.List;public class ListDemo {		public static void main(String[] args) {		//创建List集合对象		List list = new ArrayList() ;				//添加一些元素		//思考:如果将"1"变成1报错吗?如果不报错说明原因(jdk5后的自动拆装箱)		list.add("1") ;		list.add("3") ;		list.add("4") ;				/* 1---添加		 * void add(int index, Object element)---可选操作		 * 功能:在列表的指定位置插入指定元素,在指定位置前面插入一个新的元素		 * 返回值类型:void		 * */		list.add(1, "2") ;		System.out.println(list);				/* 2---删除		 * E(Object) remove(int index)---可选操作		 * 功能:移除列表中指定位置的元素		 * 返回值类型:Object--返回被删除的元素(而不是删除元素后的集合)		 * */		System.out.println("remove对应索引的元素:"+list.remove(2));		System.out.println("剩余的元素:"+list);		//(1)出错的原因:IndexOutOfBoundsException:角标越界了(没有索引为3的元素)		//System.out.println("remove:"+list.remove(3));(1)						/* 3---用指定元素替换列表中指定位置(索引)的元素		 * E(泛型) set(int index,Object element)---可选操作		 * 功能:用指定元素替换列表中指定位置的元素		 * 参数类型:		 * index - 要替换的元素的索引                 * element - 要在指定位置存储的元素		 * 返回值类型:E(泛型)以前在指定位置的元素 		 * */				/* 4---获取功能		 * E get(int index)--		 * 功能:返回列表中指定位置的元素		 * 参数:集合的索引		 * 返回值类型:E(泛型)--列表中指定位置的元素		 * */		System.out.println("set返回的是以前在指定位置的元素 :"+list.set(1, "5")) ;		System.out.println("用set替换后用get得到新位置的元素:"+list.get(1)) ;//思考:如果集合的索引不是基本类型的封装类型,返回的是?(其实主要看集合所存取的引用类型)		System.out.println("list"+list);	}}
编译结果:

实例3

package 测试;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * List集合的遍历方式 1)toArray() 2)Collection集合中的Iterator iterator(); * 说明1:创建集合-----添加元素---size()获取集合元素个数----对集合元素进行向下转型---得到每个元素的内容---得到所需 * 说明2:创建集合-----添加元素---hasNext()判断集合是否还有元素----next()得到集合元素的引用类型,进行向下转型---得到每个元素的内容(所需) *  * @author Orange */public class xianong {	public static void main(String[] args) {		// 创建集合对象		List list = new ArrayList();		// 从添加元素看集合存储的类型元素,为下面的向下转型做准备(重要!!!!!!!)		list.add("hello");		list.add("java");		list.add("hello");		list.add("javaweb");		list.add("hello");		list.add("python");				// 使用普通for的方法去遍历list集合,使用size()和get()相结合		for (int x = 0; x < list.size(); x++) {			// 等价------Object object = list.get(x)=new String("..") ;			// 需求:获取字符串内容同时,获取字符串长度			String s = (String) list.get(x);			System.out.println(s + "----" + s.length());		}		System.out.println("-------------------------");		// 获取迭代器对象		Iterator it = list.iterator();		while (it.hasNext()) {			String s = (String) it.next();			System.out.println(s + "----" + s.length());		}	}}
编译结果

实例4

// listIterator方法package org.westos_02;import java.util.ArrayList;import java.util.List;import java.util.ListIterator;/** * List集合的列表迭代器(特有的listIterator方法) * 	ListIterator listIterator() * 	列表迭代器接口中有以下几个方法: * 	正向遍历:  boolean hasNext() *                 功能:判断是否有下一个可以迭代的元素() * 		   Object next() *                 功能:如果有可以遍历的元素,就获取这个元素 * 	逆向遍历:  boolean hasPrevious() *                 功能:判断是否有上一个可以迭代的元素 * 		   Object  previous() *                功能:如果有上一个可以迭代的元素,就获取上一个元素 * 	注意:要使用逆向遍历,前提必须有正向遍历存在,直接使用逆向遍历,没有意义! * @author Orange */public class ListDemo3 {	public static void main(String[] args) {				//创建集合对象		List list = new ArrayList() ;				//给集合中添加元素		list.add("我") ;		list.add("爱") ;		list.add("你") ;				//获取列表迭代器(按适当顺序)		ListIterator it = list.listIterator() ;		while(it.hasNext()){			String s = (String)it.next();			System.out.print(s+" ");		}		System.out.println();		System.out.println("-----------------------");		while(it.hasPrevious()){			String s = (String)it.previous() ;			System.out.print(s+" ");		}	}}
编译结果

练习1

package org.westos_02;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/** *问题? * 	我有一个集合,请问如果我想判断里面有没有"world"这个元素, * 	如果有,我就添加一个"javaee"元素,请写代码实现 *解释:并发(同一个时间点),并行(同一个时间段) *java.util.ConcurrentModificationException *说明:并发修改异常----当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。 *原因:当前我们用迭代器去遍历元素,使用集合添加的元素,对于迭代器是不知道集合添加了这个元素(加锁),所以会发生这个异常 *描述:使用迭代器去遍历集合,是不能直接集合添加元素! *解决方案(一致): *		1)使用迭代器遍历集合,使用迭代器添加元素----定义一个功能 *		2)使用集合遍历,使用集合添加元素---------定义一个功能 * @author Orange */public class ListTest {		public static void main(String[] args) {		//创建List集合对象		List list = new ArrayList() ;				//给集合中添加元素		list.add("hello") ;		list.add("world") ;		list.add("java") ;		//方式1---集合		collectionTraversal(list);		//方式2---迭代器(对结果说明:当发现"world"就在其后面添加"javaee")		listIterationTraversal(list);						/*		 错误的方法:		1--获取迭代器		Iterator it = list.iterator() ;		2--遍历		while(it.hasNext()){       //使用迭代器遍历			String s = (String)it.next() ;			//判断			if("world".equals(s)){				//添加一个元素				list.add("javaee") ;//使用集合添加元素			}		}		*/	}	public static void listIterationTraversal(List list){		//方案1:使用迭代器遍历集合,使用迭代器添加元素(Iteration没有add()方法,无法添加元素)			//Iterator it = list.iterator() ; 			//报错解释:该迭代器中没有添加功能,而List集合中的专有遍历方式----列表迭代器有添加功能:add(Object obj)			//将指定的元素插入到列表中(指定元素后面插入)				ListIterator it = list.listIterator() ;				while(it.hasNext()){					String s = (String) it.next() ;										if("world".equals(s)){						//使用迭代器添加						it.add("javaee") ;					}				}				System.out.println("list:"+list);		}		public static void collectionTraversal(List list){		       //集合遍历,集合添加元素		for(int x = 0 ; x 

未完待续...

相关链接:1---,2---,3---,4---点击打开链接(知乎:细节),5---点击打开链接,6---(图),7---点击打开链接(可变长度的原理)

上一篇:java程序员从笨鸟到菜鸟之回顾练习
下一篇:Android中缓存、文件、SharedPreference和数据库的清除

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月14日 13时55分25秒