逗号分隔的字符串转集合
主要分为两部分
1.现将字符串转换成数组(字符串转数组又可以分为几种方式,就不再叙述了)
2.再讲数组转换成集合
方法一
List<String> stringList1 = Arrays.asList(str.split(","));
方法二
List<String> stringList2 = Arrays.stream(str.split(",")).collect(Collectors.toList());
方法三
List<String> stringList3 = Splitter.on(",").trimResults().splitToList(str);
比较几种方式运行时间
@Test
public void strToList() {
List<String> testList = new ArrayList<>();
for (int i = 0; i < 100000000; i++) {
testList.add("数据" + i);
}
String str = StringUtils.collectionToCommaDelimitedString(testList);
//方法一
long startTime1 = System.currentTimeMillis();
List<String> stringList1 = Arrays.asList(str.split(","));
long endTime1 = System.currentTimeMillis();
log.info("方法一耗时:数据量:{},耗时{}", stringList1.size(), (endTime1 - startTime1));
//方法2
long startTime2 = System.currentTimeMillis();
List<String> stringList2 = Arrays.stream(str.split(",")).collect(Collectors.toList());
long endTime2 = System.currentTimeMillis();
log.info("方法二耗时:数据量:{},耗时{}", stringList2.size(), (endTime2 - startTime2));
//方法3
long startTime3 = System.currentTimeMillis();
List<String> stringList3 = Splitter.on(",").trimResults().splitToList(str);
long endTime3 = System.currentTimeMillis();
log.info("方法三耗时:数据量:{},耗时{}", stringList3.size(), (endTime3 - startTime3));
}
数量级 百、千
结果:运行多次三种方式每次运行结果耗时相差不大
结论:运行多次效率比方法一>方法三>方法二
数量级 万
结果:运行多次三种方式每次运行结果耗时相差不大
结论:运行多次效率比方法一>方法三>方法二
数量级 十万
结果:运行多次三种方式每次运行结果耗时相差不大
结论:运行多次效率比方法一>方法三>方法二
数量级 百万
结果:运行多次三种方式每次运行结果耗时相差不大
结论:运行多次效率比方法一>方法三>方法二
千万级别对比
结果:方法三只要第一次运行的时候耗时特别短,后面多次表现中规中矩
结论, 综合比较 方法一>方法三>方法二
如果小伙伴在业务处理中,遇到更高级别数据转换时 可以具体分析下,如果有更高效的转换方式,也请大家留言提醒