List集合常见操作+calendar日期类的简单操作+stream流入门等基础练习

1.删除list中的元素


public class MainPractice {
    public static void main(String[] args) throws ParseException {
        ArrayList<String> wslist = new ArrayList<String>();
        wslist.add("111");
        wslist.add("222");
        wslist.add("333");
        wslist.add("444");
              
              Iterator<String> iterator = wslist.iterator();
              
              while(iterator.hasNext()) {
               String next = iterator.next();
               System.out.println("循环内"+next);
               if(next.equals("222")) {
                iterator.remove();
                continue;
               }
              }
              
              for (String string : wslist) {
               System.out.println(string);
        }

执行结果:
在这里插入图片描述

2.String类型日期转成Date

System.out.println("===========================");
       List<User> userlist = new ArrayList<User>();
       User u = new User();
       // u.setUserId(1);
       // u.setNickName("小明");
       SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
       try {
           Date date = sf.parse(sf.format(System.currentTimeMillis()).toString());
           // System.out.println("hello"+date);

           // u.setBirthday(date);
       } catch (ParseException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
       //

执行结果:
在这里插入图片描述

3.比较字符串是否内容相同

        String a = "tweh";
        if (!MyStringUtil.isBlank(a)) {
            if ("iu".equals(a)) {
                System.out.println("a的内容是:iu");
            }
            System.out.println("你好");
        }
        System.out.println("===========================");

执行结果:
在这里插入图片描述

4.删除List中的某个元素

注: 在List中增删元素不要用for循环

        List<Integer> alist = new ArrayList<>();
        alist.add(1);
        alist.add(4);
        alist.add(3);
        alist.add(9);
        alist.add(6);
        Iterator<Integer> iteratorr = alist.iterator();
        while (iteratorr.hasNext()) {
            Integer next = iteratorr.next();
                // 引用类型比较要用equals()
                if (next.equals(3)) {
                    iteratorr.remove();
                }
        }
        System.out.println(alist.toString());
        System.out.println("===========================");

执行结果:
在这里插入图片描述
注意:使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。

为什么要谨慎使用Arrays.asList、ArrayList的subList?.

5.获取字符串中每个元素


    /*
     * 阿里开发者文档第14条: 使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无 内容的检查,否则会有抛
     * IndexOutOfBoundsException 的风险。解决方法:String[] strings=str.split(",",
     * -1);
     */
        String str = "张三,2,3,4, , , ,6,,,";
        char[] stringss=str.toCharArray();
        for (int i = 0; i < stringss.length; i++) {
        System.out.println(stringss[i]);
         }
        String[] strings = str.split(",", -1);

        for (int i = 0; i < strings.length; i++) {
            if (!strings[i].matches("[0-9]*")) {

                System.out.println("格式不规范,请用逗号分隔");
                // 想结束本次循环跳至下一次循环用continue
                continue;
            }
            System.out.println("i=" + i + " " + strings[i] + " ");
        }
        System.out.println("字符串个数:" + strings.length);
        System.out.println("===========================");

执行结果:
在这里插入图片描述

 String s = "123456";
        List<String> list = Arrays.asList(s.split(""));
        List<String> newlist = new ArrayList<String>(list);
        System.out.println("测试测试测试"+list);
        System.out.println("==================================");

执行结果:
在这里插入图片描述

6.截取List子集合,子集合增加元素且不改变/改变原父集合

    /*
     * 1.ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException异常
     * 2.使用sublist()返回的只是原list对象的一个视图,因此Sublist内部类和ArrayList的内部保
     * 存数据的地址是一样得;即它们在内存中是同一个List(集合),只是parentOffset ,size等参数不同
     * 3.对原集合元素的增加或删除,均会导致子列表的遍历、增加、删除产生 ConcurrentModificationException 异常
     * 4.修改subList的数据就会改变原list的数据,如果达到的效果要对子集进行操作,原始list不改变。建议以 下方式:
     * List<Object> tempList = new ArrayList<Object>(list.subList(2,
     * lists.size()));
     */
        List<String> blist = new ArrayList<String>();
        blist.add("d");
        blist.add("3wqe3");
        blist.add("44");
        blist.add("55");
        blist.add("66");
        // 取得的是下标为3到5的元素,不包含下标为5的元素.
        List<String> subblist = blist.subList(3, 5);
        subblist.add("sdk");
        System.out.println("blist的子串:" + subblist.toString());
        System.out.println("blist:" + blist.toString());
        System.out.println("++++++++不改变blist的情况下操作subblist++++++++");
        List<String> clist = new ArrayList<String>(blist.subList(3, 5));
        clist.add("jjj");
        System.out.println("clist的内容" + clist);
        System.out.println("此时blist的内容:" + blist);
        System.out.println("===========================");

执行结果:
在这里插入图片描述

7.Lambda 表达式遍历list集合

/*
 * 使用 toArray 带参方法,直接使用 toArray 无参方法存在问题,此方法返回值只能是 Object[]类,若强转其它
 * 类型数组将出现 ClassCastException 错误
 */
        List<String> dlist = new ArrayList<String>();
        dlist.add("sdf");
        dlist.add("222");
        dlist.add("qwqwr4");
        dlist.add("rgae");
 // Lambda 表达式遍历list集合(JDK 1.8)
        dlist.forEach(item -> {
            System.out.println("第一种Lambda 表达式遍历dlist: " + item);
        });
        System.out.println("++++++++++++++++++++++++++");
        dlist.forEach(System.out::println);
        System.out.println("++++++++++++++++++++++++++");

执行结果:
在这里插入图片描述

8.Lambda 表达式,判断List集合中是否包含某字符串

  // Lambda 表达式 判断List集合中是否包含字符串“qwqwr4”(JDK 1.8)
        System.out.println("\n第1种判断方式:Lambda 表达式,判断List集合中是否包含字符串“qwqwr4”");
        dlist.forEach(item -> {
            if ("qwqwr4".equals(item)) {
                System.out.println(item);
            }
        });
        System.out.println("\n第2种判断方式:Lambda 表达式,判断List集合中是否包含字符串“qwqwr4”");
        dlist.stream().filter(item -> item.equals("qwqwr4")).forEach(System.out::println);
        System.out.println("\n++++++++++++++++++++++++++");

执行结果:
在这里插入图片描述

/*
 * 入参分配的数组空间不够大时,toArray 方法内部将重新分配 内存空间,并返回新数组地址;如果数组元素个数大于实际所需,下标为[
 * list.size() ] 的数组元素将被置为 null,其它数组元素保持原值
 */
        String[] strs = new String[dlist.size()];
        strs = dlist.toArray(strs);
  // Lambda 表达式遍历数组(JDK 1.8)
        Arrays.asList(strs).forEach(item -> System.out.println("第一种Lambda 表达式遍历strs: " + item));
        System.out.println("++++++++++++++++++++++++++");
        Arrays.asList(strs).forEach(System.out::println);
        System.out.println("===========================");

执行结果:
在这里插入图片描述

9.foreach 方法遍历map集合

/*
 * Map.foreach 方法遍历map集合
 */
        Map<String, String> amap = new HashMap<>(16);
        amap.put("1", "张三");
        amap.put("2", "赵四");
        amap.put("3", "王五");
        amap.put("4", "冯柳");
        System.out.println("Map.foreach 方法遍历amap集合: ");
        amap.forEach((key, value) -> {
            System.out.println(key + ":" + value);
        });
        System.out.println("传统的Map迭代方式: ");
        for (Map.Entry<String, String> entry : amap.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
        System.out.println("===========================");

执行结果:
在这里插入图片描述

10.判断字符串是230还是2.3.0,统一转换成2.3.0格式

/*
 * List集合的泛型为自定义类型User 需求是userCode一样的便是同一个对象
 */
 //判断字符串是230还是2.3.0,统一转换成2.3.0格式
        String versionNameByAndroid = "230"; 
        if (versionNameByAndroid != null && versionNameByAndroid.length()!=0) {
            //则字符串不为空或空格
            if(!versionNameByAndroid.contains(".")){
                versionNameByAndroid = versionNameByAndroid.replace("", ".");
                versionNameByAndroid = versionNameByAndroid.substring(1, versionNameByAndroid.length()-1);
            }
       }
       
        System.out.println(versionNameByAndroid);
        System.out.println("==================================");

执行结果:
在这里插入图片描述

11.将两个list合并成一个list

        String s = "123456";
        List<String> list = Arrays.asList(s.split(""));
        List<String> newlist = new ArrayList<String>(list);
        System.out.println("测试测试测试"+list);
        System.out.println("==================================");
 //将两个list合并成一个list
        List<String> listOne = new ArrayList<String>();
        listOne.add("111");
        listOne.add("222");
        listOne.add("333");
        List<String> listTwo = new ArrayList<String>();
        listTwo.add("aaa");
        listTwo.add("bbb");
        listTwo.add("ccc");
        //法一:addAll  添加另一集合里面的元素
        listOne.addAll(listTwo);
        System.out.println(listOne);
        //法二:add 添加整个集合包括[]符号
        listTwo.add(listOne.toString());
        System.out.println(listTwo);
        //Stream操作
        List<String> destList=Collections.synchronizedList(new ArrayList<>(Arrays.asList("fool")));
        List<String> newList=Arrays.asList("1","2","6","3");
        newList.stream().sequential().collect(Collectors.toCollection(()->destList));
        System.out.println(destList);
        System.out.println("==================================");

执行结果:
在这里插入图片描述

12.Stream流学习

1)生成流的三种方式

/*
 * Stream流学习,特点:同一个流只能使用一次;流不存储值,通过管道的方式获取值;本质是函数式的,对流的操作会生成一个结果,不过并不会修改底层的数据源,集合可以作为流的底层数据源
 *    一.生成流的三种方式
 * */       
        //法一: 通过of方法        
        int[] nums={1,2,3};
        Stream stream1=Stream.of(nums);
        System.out.println(stream1.toString());//一个对象
        System.out.println("==================================");
        //法二: 通过数组方式
        String[] str3=new String[]{"hello","world"};
        Stream stream2=Arrays.stream(str3);
        Stream stream3=Stream.of(str3);
        //法三:通过集合.stream
        List<String> liist=Arrays.asList("helo","ok");
        list.stream();

执行结果:
在这里插入图片描述

2)流怎么用-入门使用

/*
*   二.流怎么用(入门使用)
* */ 
        //IntStream怎么用,  IntStream.of().forEach() 遍历输出
        System.out.println("IntStream的常用方法:forEach");
        IntStream.of(5,6,7).forEach(System.out::println);
        System.out.println("++++++++++++++++++++++++++");
        System.out.println("IntStream的常用方法:range(start,end)");
        //IntStream.range(start,end),从start排序到(end-1)
        IntStream.range(11,18).forEach(System.out::println);
        System.out.println("++++++++++++++++++++++++++");
        //IntStream.rangeClosed(start,end),,从start排序到end
        System.out.println("IntStream的常用方法:rangeClosed(start,end)");
        IntStream.rangeClosed(12,15).forEach(System.out::println);
        System.out.println("++++++++++++++++++++++++++");
        //.sum()求和
        System.out.println("IntStream的常用方法:求和sum()");
        System.out.println(IntStream.of(nums).sum());
        System.out.println("==================================");

执行结果:
在这里插入图片描述

小练习: List类型,int的值,对每一个元素*2,然后加起来得到结果;

      /*
       * List类型,int的值,对每一个元素*2,然后加起来得到结果; reduce(),终止操作,及早求值.
       * */  
      System.out.println("List类型,int的值,对每一个元素*2,然后加起来得到结果:");
      List<Integer> zlist=Arrays.asList(1,2,3,4,5,6);
      System.out.println(zlist.stream().map(integer->integer*2).reduce(0,Integer::sum));

执行结果:
在这里插入图片描述

13.calendar类的使用:当前日期+1/-1

/*
*   calendar类的使用:当前日期+1
* */       
      Calendar cal=Calendar.getInstance();
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
      SimpleDateFormat sd=new SimpleDateFormat("yyyy.MM");
      cal.add(Calendar.DATE, 24);
      System.out.println("今日日期加24   "+sdf.format(cal.getTime()));
      for (int i = 0; i < 7; i++) {
          cal.add(Calendar.DATE,-1);
          System.out.println("今日日期减i   "+sdf.format(cal.getTime())+"   i="+i);
      }
      for (int i = 0; i < 12; i++) {
          cal.add(Calendar.MONTH, -1);
          System.out.println("今日日期减i   "+sd.format(cal.getTime())+"   i="+i);
      } 
      cal.add(Calendar.HOUR, -2);
      Date dat=new Date();
      Date creatAt = sdf.parse("2020.10.23 16:57:53");
      System.out.println("今日时间减2小时   "+sdf.format(cal.getTime()));
      int result = creatAt.compareTo(cal.getTime());
      System.out.println("已过期:"+result);
      System.out.println("==================================");

执行结果:
在这里插入图片描述

14.截取字符串

/*
*  截取字符串
* */        
      String url="http://10.69.11.184:8080/admin/countData?task=42&target=漫画名称";
      String re=url.substring(url.lastIndexOf("=")+1);
      System.out.println("想获取target=漫画名称        "+re);   //结果:漫画名称
      System.out.println("==================================");
      String url2="\"task\":\"48\",\"version\":\"2.5.2\",\"os\":\"Android\",\"uid\":\"907ab225-f3d6-4293-a10b-0a6a74361633\"";
      String re2=url2.substring(url2.indexOf("task")+7,url2.indexOf(",\"version")-1);
      System.out.println("想获取task的位置        "+re2);   //结果:漫画名称
      String url3="2020-09-23 15:21:35-------------{\"task\":\"51\",\"target\":\"开屏页\"}";
      String re4=url3.substring(url3.indexOf("task")+7,url3.indexOf(",\"target")-1);
      String re3=url3.substring(url3.indexOf("target")+9,url3.length()-2);
      System.out.println("想获取target的位置        "+re3);   //结果:漫画名称
      System.out.println("想获取task的位置        "+re4);   //结果:漫画名称
      String url4="{\"tradeStateDesc\":\"订单未支付\",\"tradeState\"}}";
      String re5=url4.substring(url4.indexOf("tradeStateDesc")+17,url4.indexOf("\",\"tradeState"));
      System.out.println("想获取status的位置        "+re5);   //结果:漫画名称
 //字符串拼接
      System.out.println("==================================");
     
      ArrayList<String> wlist = new ArrayList<String>();
      wlist.add("111");
      wlist.add("222");
      wlist.add("333");
      wlist.add("444");

      String pre = "前缀";
      
      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < wlist.size(); i++) {
          sb.append(wlist.get(i));
    }
      System.out.println("字符串拼接        "+sb.toString());  //结果:111222333444
      System.out.println("==================================");

  
    }
}

执行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值