list字符串去重的三种方式 list去重 字符串去重

list字符串去重的三种方式

求List< String >中元素去重,并且求出去重后的个数

String字符串逆序输出的两种方式
http://blog.csdn.net/sunrainamazing/article/details/71583954

String字符串的之间的各类转化操作
http://blog.csdn.net/sunrainamazing/article/details/71583685

判断是否为回文字符串,逆序输出字符串
http://blog.csdn.net/sunrainamazing/article/details/55222791

  1. 采用原始的for循环遍历
  2. 采用set集合的特点
  3. 采用Java8流处理方式
package sun.rain.amazing.stream;

import org.junit.Test;

import java.util.*;
import java.util.stream.Collectors;

/**
 * Created by sunRainAmazing on SUN_RAIN_AMAZING
 * @author sunRainAmazing
 */
public class ListCaseOperate {

    private static  List<String> list3;

    static{

        //注意 Arrays.asList的陷阱 返回的并不是 java.util.ArrayList
        //进行remove操作时会报错
//      list3 = 
//          Arrays.asList("tom","com","boss"
//              ,"boss","jerry","jerry");



        list3 = new ArrayList<String>(
                    Arrays.asList("tom","com","boss","boss","jerry","jerry"));

    }



    /**
     * 将 list3 的数据进行去重操作 -- 采用 for循环判断
     * 若直接只采用 Arrays.asList进行初始化
     *      不支持 remove()操作  UnsupportedOperationException
     *
     *  这是因为 Arrays.asList返回的 ArrayList 
     *       并不是java.util.ArrayList,
     *      而是在Arrays类中重新定义的一下内部类ArrayList
     *      这个内部类 ArrayList并没有重写remove方法。
     *  解决方式:
     *      List<String> list3 =
     *          new ArrayList<String>
     *         (Arrays.asList("tom","com","jerry"));
     *
     * E remove(int index)     
     * 移除列表中指定位置的元素(可选操作)。
     *      将所有的后续元素向左移动(将其索引减 1)。
     * 返回从列表中移除的元素。
     */
    @Test
    public void getDistinctByFor(){
        List<String> list = list3;
        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))){
                    list3.remove(i); //注意这里是list3
                }
            }
        }
        System.out.println(list3);
        System.out.println(list3.size());
    }




    /**
     * 将 list3 的数据进行去重操作 -- 采用Set去重
     */
    @Test
    public void getDistinctBySet(){
        Set<String> set = new HashSet<>();
        set.addAll(list3);
        System.out.println(set);
        System.out.println(set.size());

    }





    /**
     * 将 list3 的数据进行去重操作 -- 采用 Stream 去重
     */
    @Test
    public void getDistinctByStream(){
        System.out.println(list3.stream()
                                .distinct()
                                .collect(Collectors.toList()));

        System.out.println(list3.stream()
                                .distinct()
                                .count());
    }



}
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值