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.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
。
List
转Array
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
)的修改不会对被转化后的Set
(List
)造成影响。
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()); } }
相关文章
- java map 二维数组_Java二维数组实现简单Map
- Map集合转换成实体类对象,实体类对象转换为map集合,互转工具类「建议收藏」
- UTF-8编码占几个字节?
- MAP遍历_map容器遍历
- 有序的Map集合_map集合特点
- 回顾各种编码的创新和异同-MEPG2, MPEG4, H.264/AVC以及H.265/HEVC比较[通俗易懂]
- Map的有序性_有序的map集合有哪些
- soapUI模拟发送json数据时,遇到的中文编码问题详解程序员
- Redis实现快速存储Map(redis存map)
- 深入探索Linux视频编码源码(linux视频源码)
- 浏览Linux系统编码(查看linux系统编码)
- Redis精准读取Map数据的窍门(redis获取map)
- MySQL编码修改:从未如此简单(mysql编码修改)
- MySQL数据库:查看并调整编码(mysql数据库查看编码)
- 查询MySQL编码格式:一步一步指南(查询mysql编码格式)
- 使用Oracle客户端的编码技巧:如何优化数据库管理(oracle客户端编码)
- MySQL配置文件编码方式详解(ini格式)(mysqlini编码)
- MySQL 设置编码:准备命令(mysql 设置编码命令)
- Redis快速遍历Map的技巧(redis 遍历map)
- Redis库编码查看指南(如何查看redis库编码)
- 从Redis中取出Map一步搞定(从redis中取map)
- 使用Redis存储Map结构数据(将map存到redis中)
- 警惕Redis Map的频繁变更(redis频繁修改map)
- 基于Redis集群的Map数据结构的删除(redis集群map删除)
- Oracle中Map结构的精妙运用(oracle中MAP结构)
- 在Redis中使用Map存储数据(redis里面加入map)
- 科学上网如何使用Oracle MAP(oracle map使用)
- 学会调整Redis中Map容量的设置(redis设置map大小)
- 使用Redis进行Map设置(redis设置map)
- Redis脚本快速遍历Map集(redis脚本遍历map)
- Oracle10g解决中文编码之道(oracle10g编码)
- UTF-8编码第1/2页
- python处理中文编码和判断编码示例
- php中的字符编码转换函数用法示例
- PHP中文编码小技巧
- asp解密、还原chrw、chr编码文件的方法