• 007-TreeMap、Map和Bean互转、BeanUtils.copyProperties(A,B)拷贝、URL编码解码、字符串补齐,随机字母数字串


    一、转换

    1.1、TreeMap 有序Map

      无序有序转换

      使用默认构造方法:

    public TreeMap(Map<? extends K, ? extends V> m)

    1.2、Map和Bean互转

    BeanUtils位于org.apache.commons.beanutils.BeanUtils下面,其方法populate的作用解释如下:
    完整方法:
    BeanUtils.populate( Object bean, Map properties ),

    这个方法会遍历map<key, value>中的key,如果bean中有这个属性,就把这个key对应的value值赋给bean的属性。

    1.2.1、bean 转换成 map

    Person person1=new Person();  
    person1.setName("name1");  
    person1.setSex("sex1");  
    Map<String, String> map = BeanUtils.describe(person1);  

    1.2.2、map 转换成 bean

    public static <T> T map2Bean(Map<String, String> map, Class<T> class1) {  
      T bean = null;  
      try {  
        bean = class1.newInstance();  
        BeanUtils.populate(bean, map);  
      } catch (Exception e) {  
        e.printStackTrace();  
      }  
      return bean;  
    }  

    1.3、Array、List互转

    String[] s = new String[]{"A", "B", "C", "D","E"};
    List<String> list = Arrays.asList(s);

    注意这里list里面的元素直接是s里面的元素( list backed by the specified array),换句话就是说:对s的修改,直接影响list

    ListArray

    String[] dest = list.toArray(new String[0]);//new String[0]是指定返回数组的类型
    System.out.println("dest: " + Arrays.toString(dest));

    注意这里的dest里面的元素不是list里面的元素,换句话就是说:对list中关于元素的修改,不会影响dest

    1.4、List、Set互转

      因为List和Set都实现了Collection接口,且addAll(Collection<? extends E> c);方法,因此可以采用addAll()方法将List和Set互相转换;另外,List和Set也提供了Collection<? extends E> c作为参数的构造函数,因此通常采用构造函数的形式完成互相转化。

    //List转Set
    Set<String> set = new HashSet<>(list);
    System.out.println("set: " + set);
    //Set转List
    List<String> list_1 = new ArrayList<>(set);
    System.out.println("list_1: " + list_1);

       和toArray()一样,被转换的List(Set)的修改不会对被转化后的SetList)造成影响。

    1.5、Array、Set互转

    //array转set
    s = new String[]{"A", "B", "C", "D","E"};
    set = new HashSet<>(Arrays.asList(s));
    System.out.println("set: " + set);
    //set转array
    dest = set.toArray(new String[0]);
    System.out.println("dest: " + Arrays.toString(dest));

    核心是:Arrays.asList() 和 Collection.toArray()

    二、其他 

     2.1、BeanUtils.copyProperties(A,B)拷贝

      3.1、package org.springframework.beans;中的

        BeanUtils.copyProperties(A,B);//A→B 是A中的值付给B

      3.2、package org.apache.commons.beanutils;(常用)

        BeanUtils.copyProperties(A,B);//B→A 是B中的值付给A

        BeanUtils.copyProperties使用时Date为空,解决办法:前面加代码:ConvertUtils.register(new DateConverter(null), java.util.Date.class);

      3.3、package org.apache.commons.beanutils;(常用)

        PropertyUtils.copyProperties(A,B);//B→A 是B中的值付给A

      注意:PropertyUtils提供类型转换功能,即发现两个JavaBean的同名属性为不同类型时,在支持的数据类型范围内进行转换,而BeanUtils不支持这个功能,但是速度会更快一些.

    2.2、URL编码解码

      编码:java.net.URLEncoder.encode(String s)

      解码:java.net.URLDecoder.decode(String s);    

    2.3、字符串补齐

      org.apache.commons.lang.StringUtils  

    String test ="123456";
    String value = StringUtils.leftPad(test, 10, "0");
    System.out.println(value);

      输出:0000123456

    2.4、随机字母数字串

    RandomStringUtils.randomAlphanumeric(32)

    2.5、Java 删除List元素的正确方式

    2.5.1、方式一:使用Iterator的remove()方法

    public class Test {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("aa");
            list.add("bb");
            Iterator<String> it = list.iterator();
            while(it.hasNext()){
                String str = (String)it.next();
                if("aa".equals(str)){
                    it.remove();
                }        
            }
            System.out.println(list.size());
        }
    }

    2.5.2、方式二:使用List的remove()方法,注意list.size()的位置

    public class Test {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("aa");
            list.add("bb");
            for (int i = list.size() - 1; i >= 0; i--) {
                String str = list.get(i);
                if ("aa".equals(str)) {
                    list.remove(str);
                }
            }
            System.out.println(list.size());
        }
    }

    2.5.3、方式三:使用CopyOnWriteArrayList

    public class Test {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("aa");
            list.add("bb");
            CopyOnWriteArrayList<String> cowList = new CopyOnWriteArrayList<String>(list);
            for (String str : cowList) {
                if ("aa".equals(str)) {
                    cowList.remove(str);
                }
            }
            System.out.println(cowList.size());
        }
    }

      

  • 相关阅读:
    Python爬虫常用请求头User-Agent
    python使用清华镜像源安装工具包selenium,解决直接pip install安装慢的问题
    工于擅其事必先利其器-全家桶的激活
    user.vue
    Gateway流量的入口,API全托管,协议适配,防刷
    nacos配置服务2
    项目笔记
    sql性能优化
    windows脚本
    js时间格式化参考文档
  • 原文地址:https://www.cnblogs.com/bjlhx/p/8624284.html
Copyright © 2020-2023  润新知