Java基础之集合框架--Collections的fill()方法和replaceAll()方法


package newFeatures8;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;



/* Collections.fill(List<? super T> list,T obj)方法
 * public static <T> void fill(List<? super T> list,T obj)
        使用指定元素替换指定列表中的所有元素。                         
 */

/* Collections.replaceAll(List<T> list, T oldVal,T newVal)
 * public static <T> boolean replaceAll(List<T> list, T oldVal,T newVal)
 * 使用另一个值替换列表中出现的所有某一指定值。更确切地讲,使用 newVal 
 * 替换 list 中满足 (oldVal==null ? e==null : oldVal.equals(e)) 的每个 e 元素。(此方法对列表的大小没有任何影响。)
 */

public class CollectionsDemo {

	public static void main(String[] args) {
		fillDemo();
	}
	
	/**
	 * @author ljh
	 * @param nothing
	 * @return void
	 * @since 1.2
	 * @description 该Collections.fill()方法有局限性,只能替换指定list中的全部元素
	 * 如果我想要替换list中的部分元素,我任然要使用fill()该怎么办呢?
	 * 可以这么做使用list集合中的list.subList(fromIndex, toIndex)获取到子集合
	 * 然后再使用fill()方法,subList也有局限,就是元素要连续,要是不连续以下3个方法可以组合使用
	 * @see Collections.replaceAll(list, oldVal, newVal)
	 * @see List.set(index, element)//一般和for循环一起使用
	 * @see List.subList(fromIndex, toIndex)
	 */
	public static void fillDemo(){
		List<String> list=new ArrayList<>();
		list.add("abcd");//String类本身就是实现了Comparable接口
		list.add("kkkkk");
		list.add("z");
		list.add("zz1");
		list.add("zz");
		list.add("qq1");
		list.add("qq1");
		list.add("qq2");
		list.sort(null);//Collections.sort(list);
		System.out.println("原集合是:"+list);
		List<String>  subList=list.subList(1, 5);//角标如果越界则抛异常
		System.out.println("子集合是:"+subList);
		Collections.fill(subList,"tt");
		System.out.println("替换后的子集合是:"+subList);
	}
	/**
	 * @author ljh
	 * @param nothing
	 * @return void
	 * @since 1.2
	 * @description 替换满足条件的每个list元素
	 * 
	 * @CoreSourceCode
     * <p>replaceAll()的核心源代码是:
     * <pre>
     * {@code
     *    for (int i=0; i<size; i++) {
                    if (oldVal.equals(list.get(i))) {
                        list.set(i, newVal);
                        result = true;
                    }
          }
     * }</pre>
	 * 
	 * @see List.set(index, element)//一般和for循环一起使用
	 * 
	 */
	public static void replaceAllDemo(){
		List<String> list=new ArrayList<>();
		list.add("abcd");//String类本身就是实现了Comparable接口
		list.add("kkkkk");
		list.add("qq1");
		list.add("z");
		list.add("zz1");
		list.add("zz");
		list.add("qq1");
		list.add("qq1");
		list.add("qq2");
		list.sort(null);//Collections.sort(list);
		System.out.println("原集合是:"+list);
		Collections.replaceAll(list, "qq1", "tt");
		System.out.println("替换后的集合是:"+list);
	}
	 
	
	
	 

}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值