关于List集合


//List移除
	public void listRemove(){
		List<Integer> list = new ArrayList<>();
		list.add(1);
		list.add(2);
		list.add(1);
		
		/**
		 * Remove有两种形式,一种是按Index删除,一种是按list中的值删除
		 * 按Index删除时,入参是int类型
		 * 按List值删除时,入参是复合类型
		 */
		//在Remove(Object o)时,删除的是第一次出现的值
		Integer e = 1;
		list.remove(e);
		System.out.println(list); //[2, 1]
		
		int index = 0;
		list.remove(index);
		System.out.println(list); //[1]
		
		list.add(2);
		list.add(2);
		list.add(2);
		
		List<Integer> l1 = new ArrayList<>();
		l1.add(2);
		
		//removeAll会把list中包含了l1元素的元素全删除
		list.removeAll(l1);
		System.out.println(list); //[1]
	}
	
	/*
	 * 循环删除
	 */
	public void loopRemoveList(){
		List<String> list = new ArrayList<>();
		list.add("a");
		list.add("b");
		list.add("a");
		list.add("a");
		
		for(int i = 0; i < list.size(); i++){
			if(list.get(i).equals("a")){
				list.remove(i);
			}
		}
		
		/*
		 * 因为在循环中用了 list.size()来做为循环退出判断条件,而 list在
		 * remove 掉元素后,其 list.size()的值就会发生变化,导致了数组没有循环完全就
		 * 退出了。
		 */
		System.out.println(list);//[b,a]
	}
	
	/*
	 * 使用迭代器删除
	 */
	public void iteraorRemoveList(){
		List<String> list = new ArrayList<>();
		list.add("a");
		list.add("b");
		list.add("a");
		list.add("a");
		
		/**
		 * Iterator 是 Java 迭代器最简单的实现,为 List 设计的 ListIterator 具有
		         更多的功能,它可以从两个方向遍历 List,也可以从 List 中插入和删除元素。
		 */
		Iterator<String> it = list.iterator();
		while(it.hasNext()){
			String next = it.next();
			if(next.equals("a")){
				it.remove();
			}
		}
		System.out.println(list); //[b]
	
		ListIterator<String> iterator = list.listIterator();
		while(iterator.hasNext()){
			String next = iterator.next();
			if(next.equals("b")){
				iterator.add("c");
			}
		}
		System.out.println(list); //[b, c]
	}
	
	/*
	 * 数组转集合
	 */
	public void arrayToArrayList(){
		int[] i = {2,3,4,5};
		List<int[]> list1 = Arrays.asList(i);
		System.out.println(list1); //[[I@15db9742]
		
		/*
		 * 因为 list 中只能接复合数据类型,而 int 是基本数据类型,
		 * 所以,转换不了
		 */
		Integer[] j = {1,4,3,2};
		List<Integer> list2 = Arrays.asList(j);
		System.out.println(list2); //[1, 4, 3, 2]
		
		/*
		 * Arrays.asList()的返回值还不是
		 * 一个真正的list,只是一个特殊的数组,于是,要经过再一次的转换
		 */
		Integer[] k = new Integer[]{1,2,3};
		List<Integer> list3 = Arrays.asList(k);
//		for(int l=0;l<5;l++){
//			list3.add(l);  //异常java.lang.UnsupportedOperationException
//		}
		
		//将数组转换为ArrayList的正确方式
		List<Integer> list = new ArrayList<>(list3);
		for(int p=0;p<3;p++){
			list.add(p);
		}
		System.out.println(list); //[1, 2, 3, 0, 1, 2]
	}
	
	//清空List
	public void clearList(){
		List<String> list = new ArrayList<>();
		list.add("a");
		boolean b1 = list.isEmpty();
		System.out.println("list是否为空:"+b1); //false
		list.clear(); //清空List
		System.out.println("list是否为空:"+list.isEmpty()); //true
	}
	
	//List排序
	public void sortList(){
		List<Integer> list = new ArrayList<>();
		list.add(3);
		list.add(1);
		list.add(2);
		Collections.sort(list);
		System.out.println(list); //[1, 2, 3]
	}
	
	//复杂排序
	public void sortListComplex(){
			
		List<List<Integer>> list = new ArrayList<>();
		
		List<Integer> l1 = new ArrayList<>();
		l1.add(3);
		List<Integer> l2 = new ArrayList<>();
		l2.add(1);
		l2.add(3);
		List<Integer> l3 = new ArrayList<>();
		l3.add(2);
		
		list.add(l1);
		list.add(l2);
		list.add(l3);
		
		Collections.sort(list,new Comparator<List<Integer>>() {
			@Override
			public int compare(List<Integer> o1, List<Integer> o2) {
				if(o1.get(0) > o2.get(0)){//按List<Integer>的第一个值进行降序排
					return -1;
				}else if(o1.get(0) < o2.get(0)){
					return 1;
				}
				return 0;
			}
		});
		System.out.println(list); //[[3], [2], [1, 3]]
	}
	
	//List循环
	public void loopList(){
		List<Integer> list = new ArrayList<>();
		list.add(3);
		list.add(1);
		list.add(2);
		
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
		
		for(Integer i : list){
			System.out.println(i);
		}
	}
	
	//List常用方法
	public void test2(){
		
		List<String> list = new ArrayList<>();
		list.add("a");
		int len = list.size();  
		System.out.println("集合长度为"+len); // 集合长度为1
		
		String str = list.get(0); //获取第一个元素
		System.out.println("集合的第一个元素"+str); // a
		
		list.set(0,"b"); //替换Index为0的值   类似字符串中的替换

		boolean b = list.contains("b");
		System.out.println("list中是否包含b元素"+b); //list中是否包含b元素true
		
		List<String> l1 = new ArrayList<>();
		l1.add("c");
		list.addAll(l1); //合并list
		System.out.println(list); //[b, c]
		
		list.retainAll(l1);
		System.out.println("集合中的交集元素有"+list);
		
		list.add("d");
		list.add("e");
		
		//从集合中获取一个list 从0开始到2  不包含2
		List<String> subList = list.subList(0,2);
		
		System.out.println(subList); //[c, d]
	}
	
	public void test1(){
		int[] i = {2,3,6};
		for(int a = 0; a < i.length; a++){
			int f = i[a];
			i[a] = f+1; //修改值
		}
		//修改以后的值为3、4、7
		for(int j = 0;j < i.length; j++){
			System.out.println(i[j]);
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值