toString()方法和StringUtils里的join()方法差异对比

今天在写代码时,想要把一个接收的集合转换成用逗号隔开的字符串,想到是用toString()方法可以呢还是用StringUtils.join()方法可以呢?两者之间有什么差别呢?就写了一个简单的测试代码做了一个小测试,代码如下:

import org.apache.commons.lang.StringUtils;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

/**
 * toString()方法和join()方法的区别
 */
public class toStringDemo {

    public static void main(String[] args) {
        String[] array = new String[3];
        array[0] = "202001";
        array[1] = "202002";
        array[2] = "202003";

        ArrayList<String> list = new ArrayList<>();
        list.add("202001");
        list.add("202002");
        list.add("202003");

        Set<String> set = new HashSet<String>();
        set.add("202001");
        set.add("202002");
        set.add("202003");


        System.out.println("==================join方法===========");
        System.out.printf("数组:%s \n",StringUtils.join(array, ","));
        System.out.printf("list集合:%s \n",StringUtils.join(list, ","));
        System.out.printf("set集合:%s \n",StringUtils.join(set, ","));

        System.out.println("==================toString方法===========");
        System.out.printf("数组:%s \n",array.toString());
        System.out.printf("list集合:%s \n",list.toString());
        System.out.printf("set集合:%s \n",set.toString());
    }
}

运行结果:

==================join方法===========
数组:202001,202002,202003 
list集合:202001,202002,202003 
set集合:202002,202003,202001 
==================toString方法===========
数组:[Ljava.lang.String;@cf9800 
list集合:[202001, 202002, 202003] 
set集合:[202002, 202003, 202001] 

从上面的结果可以看出,用StringUtils.join()方法得到的结果符合预期,而toString()方法针对于数组得到的数组的内存地址,对于集合的支持比较好,可以输出完整的数据结构,但是包含了[]符号,在实际应用中可以根据需求选择适当的方法。

还有一点就是toString()方法是继承自Object类的,集合重写了它,而数组没有对该方法重写,所以会造成差别,join()方法是 org.apache.commons.lang.StringUtils里提供的方法,两者的来源不同。

你可能感兴趣的:(Java学习笔记)