List总览

package jihe;

import java.util.*;

import stringbuffer.Sop;

/*
 *Collection 
 * |-->List元素有序,且可以重复;因为该集合体系有索引;
 * 		|--->ArrayList		数组结构			查询速度快,修改快,添加删除慢;线程不同步;默认情况下长度为10;每超过一次,new一个+50%长度的数组并复制数据;(可变长度数组)
 * 		|--->LinkedList		链表数据结构		查询速度慢,修改慢,添加删除快;
 * 		|--->Vector			数组结构			是ArrayList(1.2)的爸爸,出现的早(1.0);线程同步的;默认长度为10,每超过一次,new一个+100%长度的数组并复制数据;(可变长度数组)
 * 		|--->
 * |-->Set元素无序,元素不可以重复,该集合无索引;
  
 
 
 List:
 	特有方法:凡是可以操作脚标的方法都是该体系特有方法。
 	
 增
 add(index,element);
 addAll(index,Collection);
 删
 remove(index);
 改
 set(index,element);
 查
 get(index);
 subList(start,end);
 listIterator();
 
 
  List集合特有的迭代器listIterator是Iterator的子接口。
  在普通迭代时用集合操作元素会发生并发修改异常,所以在迭代时只能用迭代器的方法操作元素,而Iterator只有remove,next,hasnext三个操作;
  想要其他操作如添加和修改就需要使用其子接口:listIterator;该接口只能通过List集合的listIterator获取;
 
 * */




public class ListDemo {
	
	
	public static void method_normal(){
		
		ArrayList al=new ArrayList();
		al.add("lbr1");
		al.add("lbr2");
		al.add("lbr3");
		al.add("lbr4");
		Sop.print(al.toString());
		
		ArrayList al1=new ArrayList();
		al1.add("hh1");
		al1.add("hh2");
		al1.add("hh3");
		al1.add("hh4");
		
		al.add(1, "lwx1");
		Sop.print(al.toString());
		al.addAll(3, al1);
		Sop.print(al);
		al.remove(3);
		Sop.print(al);
		al.set(2, "bilibili");
		Sop.print(al);
		Sop.print(al.get(1));
		Sop.print(al.subList(1, 3));
		for(int i=0;i<al.size();i++)
		{
			Sop.print(al.get(i));
		}
		System.out.println();
		
		
		List l2=al.subList(1, 3);//返回类型是List;
		Sop.print(l2.toString());
		
	}

	
	public static void methodNormalInterator(){
		
		ArrayList al=new ArrayList();
		al.add("lbr1");
		al.add("lbr2");
		al.add("lbr3");
		al.add("lbr4");
		Sop.print(al.toString());
		
		ArrayList al1=new ArrayList();
		al1.add("hh1");
		al1.add("hh2");
		al1.add("hh3");
		al1.add("hh4");		
		al.add(1, "lwx1");
		al.addAll(3, al1);
		al.set(2, "bilibili");
		
		
		
		//****listIterator*****
		//迭代过程中添加/删除元素;
		Sop.print(al);
		Iterator it=al.iterator();//迭代器只知道里面有8个元素
		Object obj;
		int num;
		while(it.hasNext())
		{
			obj=it.next();
			
			if(obj.equals("hh4"))
			{
				it.remove();
				//al.add("=w=");//会返回java.util.ConcurrentModificationException错误;迭代操作过程中集合又同时操作了元素就会报错;(并发访问)
				//并发修改异常;而普通叠加器无法进行添加操作;
				Sop.print(obj);//迭代器删除了集合中的hh4的引用,但是元素还是存在的,而obj还指向该元素,所以还可以用obj来打印;
			}
			
			
		}
		Sop.print(al);
		Sop.print(al.indexOf("hh3"));
		
	}
	
	public static void method_ListIterator(){//在遍历过程中增删改查;set(M)>remove>add(M);注意顺序否则出现java.lang.IllegalStateException
		
		ArrayList al=new ArrayList();
		al.add("lbr1");
		al.add("lbr2");
		al.add("lbr3");
		al.add("lbr4");
		
		ArrayList al1=new ArrayList();
		al1.add("hh1");
		al1.add("hh2");
		al1.add("hh3");
		al1.add("hh4");		
		al.add(1, "lwx1");
		al.addAll(3, al1);
		al.set(2, "bilibili");
		Sop.print(al.toString());
		
		ListIterator li=al.listIterator();
		Object obj;
		while(li.hasNext()){
			obj=li.next();//执行了next之后指针就会向后移动一次
			if(obj.equals("hh3"))
			{
				//li.remove();//在remove之前必须要有next返回值,他才知道删除哪一个;只能出现在add之前,不能出现在add之后;
				//li.add("=w=");//添加在当前指向的元素之后
				
				
				/*
				li.remove();//remove不能使用多次;
				li.remove();
				*/
				
				
				/*
				li.add("=w=!!!");
				li.add("=w=....");//可以多次使用第二次添加的话就会在添加在第一次添加的值之后;
				*/
				
				
				li.set("=w=-----1");
				li.set("=w=-----2");//set可以使用两次,都是对next返回值的修改,可与add/remove混用,但set必须出现在第一个;				
				li.remove();//可以用在set之后,不能用在set之前,否则set就不知道set哪一个了;
				li.add("=w=-----3");
				li.add("=w=-----4");
				
			}
			
		}
		Sop.print(al.toString());
	}
	
	public static void main(String[] args) {
		
		
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值