集合之list接口

LIst接口子类的特点:

有序, 可重复

该接口所特有的方法:

增加

void add(int index, E element)
boolean addAll(int index, Collection<? extends E> c)

		List<String> li=new ArrayList<>();
		li.add("as");
		li.add("xz");
		li.add("qw");
		System.out.println(li);
		List<String> li3=new ArrayList<>();
		li.addAll(2,li3);//将li3加到2的下标处

删除

E remove(int index)

li.add(2,"zxx");
System.out.println(li);
System.out.println(li.remove(li.indexOf("zxx")));

修改

E set(int index, E element)

li.set(li.indexOf("xz"), "阿兴");//将两个方法结合起来先查找下标,再修改

查询[遍历]

E get(int index)

String ss=li.get(0);

ListIterator listIterator() 列表迭代器

//LIstInterator<E> listIterator()
		ListIterator<String> lli=li.listIterator();
		while(lli.hasNext()){
			String s=lli.next();
			System.out.println(s);
		}

ListIterator< E > listIterator(int index) 下面实现反输出时用到
获取E get(int index)

System.out.println(li.get(0));

int indexOf(Object o) //返回下标
int lastIndexOf(Object o) //从后往前找o的下标

System.out.println(li.lastIndexOf("qw"));//从后往前找qw的下标

List subList(int fromIndex, int toIndex)
//取子集合,左闭右开,从第几个开始,第几个结尾

	List<String> sub=li.subList(1, 3);//左闭右开,第几个开始,第几个结尾
	System.out.println(sub);
	String []li2=li.toArray(new String[]{});
	for (String string : li2) {
		System.out.println(string);
	}

previous()找前一个元素 haspervious() 判断前一位是否有数
与之相反的是next()和hasNext() 详情参考下面案例:
将所有的王昭君取出来,且逆序打印

		s=lli.previous();//找前一个元素,有局限,因为迭代器遍历最开始为0,没有前一个元素
		System.out.println(s);

利用列表迭代器实现反输出:

		ListIterator<String> lli2=li.listIterator(li.size());
		//因为它访问的是前一个元素,所以用的不是size-1
		//将迭代器指向最后一个的后一位
		while(lli2.hasPrevious()){
			String ss1= lli2.previous();
			System.out.println(ss1);
		}

有条件删除list集合中的元素

方法一:

		//利用迭代器实现删除(迭代器查找、迭代器删除)
		ListIterator<String> l=li.listIterator();
		while(l.hasNext()){
			String s=l.next();
			if(s.equals("阿兴"))
				l.remove();//直接删除比较的元素
		}
		System.out.println(li);
		

方法二

		//利用for循环和li集合删除元素
		String []arrs=li.toArray(new String[]{});
		for(int i=0;i<li.size();i++){
			if(li.get(i).equals("阿兴")){
				li.remove(li.indexOf("as"));//remove中只能放int型
			}
		}

如果是对象的删除呢?

ii2=l.listIterator();
		/*while(ii2.hasNext()){
			Student s=ii2.next();
			if(s.name.equals("lb")){//利用对象的名字equals就很稳!
				ii2.remove();
			}
		}*/

案例:将所有的王昭君取出来,且逆序打印

List<String> ls=new ArrayList<String>();
		ls.add("杨贵妃");
		ls.add("貂蝉");
		ls.add("西施");
		ls.add("王昭君1");
		ls.add("王昭君2");
		ls.add("王昭君3");
		ls.add("王昭君4");
		ls.add("貂蝉");
		ls.add("催化");
		//目的将所有的王昭君取出来,且逆序打印
		//子集合:
		List<String> lss=ls.subList(ls.indexOf("王昭君1"), ls.lastIndexOf("貂蝉"));
		System.out.println(ls);
		ListIterator<String> i=lss.listIterator(lss.size());//逆向输出
		while(i.hasPrevious()){
			String s=i.previous();
			System.out.println(s);
		}

集合利用简单选择去重

引言

List<String> list=new ArrayList<>();
		list.add("xinxi");
		list.add("小青");
		list.add("xinxi");
		list.add("小青");
		list.add("xinxi");
	//冒泡排序
	Integer arr[]={5,9,2,1,6};
	for(int i=0;i<5;i++){
		for(int j=0;j<5-i-1;j++)
		{
			if(arr[j]>arr[j+1]){
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
	System.out.println(Arrays.deepToString(arr));

简单选择 尽可能画图理解 跟冒泡不同

for(int i=0;i<list.size();i++)
		{
			for(int j=i+1;j<list.size();j++){
				if(list.get(i).equals(list.get(j)))
				{
					list.remove(j);
					j--;
				}
			}
		}
		System.out.println(list);
	//靠第一个和其后面的数比较,看图说话	

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值