浅谈我对集合框架的了解 - List


集合框架 (collection)


集合的说明:

当你的数据多了,你就封装到一个对象里,当对象多了,就会封装到集合里。

其实,集合是用来存储对象一种方式。


数组与集合区别:

数组:长度是固定的,可以存储基本数据类型,可以存储对象。

集合:长度是可变的,只能存储对象。


集合框架体系:


下面介绍 Collection 接口下的2个帮派 List , Set 


List ( 有序的集合 ) ------------------------------------

List 下分别有2个小弟 : ArrayList , LinkedList

List 特点:元素是有序的,可以存储重复的元素,因为List 具备索引,底层是数组结构。

-------------------------------------------------------------------------------------------------------------------------------------

ArrayList 示例:

		/* 创建 */
		ArrayList al = new ArrayList();   //创建空参数ArrayList对象,初始化容量为10
		ArrayList a2 = new ArrayList(20); //创建ArrayList对象,且指定初始化容量为20
		ArrayList a3 = new ArrayList(a2); //创建ArrayList对象,且传入ArrayList对象,初始化数据。


		/* 添加 */
		al.add("abc"); 	  //添加元素
		al.add(0 ,"qwe"); //指定位置下添加元素 (位置不可超过size()-1)
		al.addAll(a2);    //添加Collection下的对象
                al.addAll(0, a2); //从指定位置下,添加Collection下的对象


		/* 删除 */
		al.remove("abc"); //根据元素删除内容
		al.remove(0);     //根据索引删除内容
		al.clear();       //移除此列表中的所有元素。


		/* 修改 */
		al.retainAll(a2); //2个元素相比较,返回相同元素
		al.removeAll(a2); //2个元素相比较,删除相同元素
		al.set(0,"qqqq"); //指定索引,将索引对应的元素修改成qqqq


		/* 判断 */
		al.isEmpty();       //判断列表为空
		al.contains("abc"); //判断列表是否包含指定元素 abc


		/* 获取 */
		al.size();		//返回列表的长度
		al.clone(); 		//返回当前实例对象。
		al.get(0); 		//根据索引,查找元素
		al.indexOf("abc");      //根据元素,查找索引,找到返回索引位,否则-1
		al.lastIndexOf("abc");  //根据元素,查找索引,找到返回索引位,否则-1,从右往左开始


		List sub = al.subList(0, 2); //指定开始结束-1的范围,返回一个List对象,
		                             //这个需要注意,返回的是一个引用地址,不是新建立的
		                             //需要注意的是 sub调用remove方法删除某个元素时,al对象的元素也会被删除。


		String[] s = (String[]) al.toArray(new String[0]); // 转换成数组对象。



LinkedList 实例:

<pre name="code" class="java">	
	        LinkedList l2 = new LinkedList(ll); //创建LinkedList对象,且传入LinkedList对象,初始化数据。

		/* 它具备ArrayList的方法,此处不再敖述 */

		/* 下面是LinkedList 特有的方法 */

		ll.offerFirst("q");  //每一次都是从第一个位置插入元素
		ll.offerFirst("w");  //每一次都是从第一个位置插入元素
		ll.offerFirst("e");  //每一次都是从第一个位置插入元素
		ll.offerFirst("r");  //每一次都是从第一个位置插入元素

		ll.offerFirst("a");  //每一次都是从第一个位置插入元素
		ll.offerLast("1");   //每一次都是从最后个位置插入元素

		ll.peekFirst();      //每一次都是获取第一个元素
		ll.peekLast();       //每一次都是获取最后个元素

		ll.pollFirst();	     //每一次都是获取第一个元素后删除元素
		ll.pollLast(); 	     //每一次都是获取最后个元素后删除元素

		ll.element();  	     //获取第一个元素后不删除元素
		ll.offer("1111");    //在最后处插入元素。
		ll.peek();  	     //获取第一个元素后不删除元素
		ll.poll();  	     //获取第一个元素后删除元素


 

遍历集合通用方式:

		ArrayList<Integer> al = new ArrayList<Integer>(); 

		for(int i = 0; i<5; i++)
		{
			al.add(i);
		}

		//集合通用的遍历方式,通过迭代器遍历元素
		Iterator it = al.iterator();
		while(it.hasNext())
		{
			System.out.println(it.next());
		}

		/* 需要注意的是,迭代器里不允许使用it.next()二次,否则引发 NoSuchElementException 异常 */
		/* Iterator 支持删除操作  调用it.remove()方法即可 */

		//通过高级For循环遍历
		for(Integer a :al)
		{
			System.out.println(a);
		}



List 集合 特有的迭代器

		ListIterator li = al.listIterator();

		while(li.hasNext())    //正向遍历
		{
			System.out.print(li.next()+" ");
		} 

		System.out.println();

		while(li.hasPrevious()) //逆向遍历
		{
			System.out.print(li.previous ()+" ");
		}
		System.out.println();

		/* 在遍历的过程中,可以进行增删改查 */

		/*
			li.add();        //添加
			li.set(5);       //修改
			li.remove();     //删除

			li.next();       //正向获取元素
			li.previous();   //反向获取元素

			li.hasNext()     //判断下一个有没元素
			li.hasPrevious() //判断上一个有没元素
		*/






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值