zoukankan      html  css  js  c++  java
  • 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());
        }
    }

      

  • 相关阅读:
    LC.225. Implement Stack using Queues(using two queues)
    LC.232. Implement Queue using Stacks(use two stacks)
    sort numbers with two stacks(many duplicates)
    LC.154. Find Minimum in Rotated Sorted Array II
    LC.81. Search in Rotated Sorted Array II
    LC.35.Search Insert Position
    前后端分离:(一)
    Redis基本使用(一)
    GIT篇章(二)
    GIT篇章(一)
  • 原文地址:https://www.cnblogs.com/bjlhx/p/8624284.html
Copyright © 2011-2022 走看看