List或数组到String的转换

在编程过程中偶尔会遇到需要将List或数组以某个字符间隔的形式将其拼接成一个字符串,比如在发送邮件时,to列表是以分号分割的字符串,然而在程序中我们可能会一List<String>或String[]的形式存在,此时就需要做List或数组到String的转换。
在C#中,String类提供了一个叫Join的方法,因而我们使用一句代码就可以完成这样的工作:

string result = string.Join("; ", toList.ToArray());

但是在Java中貌似没有提供类似的方法(至少我还没有找到),既然没有提供,我们就可以自己来写一个:

public class StringUtils {
    /**
     * StringUitls类中的方法都是静态的,
     * 阻止其创建实例,以引起一些误解。
     * 另一种做法是将其变为abstract类,
     * 但是这样也会引起一些误解,
     * 因为abstract类的意思就是可以继承的,
     * 然而该类却不应该由其他类来继承。
     * 因而abstract类个人感觉不是一种好的做法。
     */
    private StringUtils() { }
    
    /**
     * 将array中的内容以delimiter为间隔拼接字符串
     * 
     * @param array
     * @param delimiter
     * @return
     */
    public static String join(Object[] array, String delimiter) {
        if(array == null) {
            throw new IllegalArgumentException();
        }
        
        if(array.length == 0) {
            return "";
        }
        
        StringBuilder builder = new StringBuilder();
        for(Object item : array) {
            builder.append(item.toString() + delimiter);
        }
        builder.delete(builder.length() - delimiter.length(), builder.length());
        return builder.toString();
    }
    
    /**
     * 将list中的内容以delimiter为间隔拼接字符串
     * 
     * @param list
     * @param delimiter
     * @return
     */
    @SuppressWarnings("unchecked")
    public static String join(List list, String delimiter) {
        if(list == null) {
            throw new IllegalArgumentException();
        }
        
        return join(list.toArray(), delimiter);
    }
}

测试代码如下:

 1     @Test
 2     public void testListToString() {
 3         List<String> list = new ArrayList<String>();
 4         list.add("Item1");
 5         list.add("Item2");
 6         list.add("Item3");
 7         
 8         String expected = "[Item1, Item2, Item3]";
 9         
10         assertEquals(expected, list.toString());
11     }
12     
13     @Test
14     public void testListToString2() {
15         List<String> list = new ArrayList<String>();
16         list.add("Item1");
17         list.add("Item2");
18         list.add("Item3");
19         
20         String expected = "Item1;Item2;Item3";
21         
22         assertEquals(expected, StringUtils.join(list, ";"));
23     }

时间: 2024-10-29 10:35:25

List或数组到String的转换的相关文章

android-Android-转换字符串数组到json

问题描述 Android-转换字符串数组到json 传递字符串数组到JavaScript,好像不能实现,因此想转换字符串数组到Json,然后发送到JavaScript.不知道怎么实现? 解决方案 你标题是android的 问的是js问题?? 呵呵js原生支持json,字符串写成 [{""id"":1name"":""小猪""}{""id"":2name"&q

Java数组到HashMap之算法解释

一.数组是什么? 忘了在哪本书里曾看到过类似这样的一句话"所有的数据结构都是数组的演化",想想其实是有道理的,因为计算机的内存其实就是线性的存储空间. Java示例代码: int[] array = new int[5] 忽略对象头信息和数组长度信息,JVM执行时会在堆中分配20个字节的内存空间,看起来就是这样的: 这样的数据结构可以很方便地通过数组下标存取数据,但在查找时需要遍历数组,平均时间复杂度为O(n/2). 当数据量很大或者查找操作频繁的时候,这样的遍历操作几乎是不可接受的.

JavaScript 保存数组到Cookie的代码_javascript技巧

JavaScript中数组是无法直接保存为Cookie的(PHP可以),那要将数组转存为字符串,再保存在Cookie中,简单的一维数组我们直接用toString()或者join就可以了: JavaScript中toString函数方法是返回对象的字符串表示. 使用方法:objectname.toString([radix]) 其中objectname是必选项.要得到字符串表示的对象. radix是可选项.指定将数字值转换为字符串时的进制. join是其中一个方法. 格式:objArray.joi

使用ksoap2传递字符串数组到webservice

问题描述 使用ksoap2传递字符串数组到webservice 在android程序中有一个Web Client使用ksoap2,但是还是不能把字符串数组作为一个参数传递到webservice中.贴出相关代码: String[] items={""hello""world""};request.addproperty(""str""items); 请求大家的帮忙,谢谢! 解决方案 好像只能一条条加 publ

JavaScript 保存数组到Cookie的代码

JavaScript中数组是无法直接保存为Cookie的(PHP可以),那要将数组转存为字符串,再保存在Cookie中,简单的一维数组我们直接用toString()或者join就可以了: JavaScript中toString函数方法是返回对象的字符串表示. 使用方法:objectname.toString([radix]) 其中objectname是必选项.要得到字符串表示的对象. radix是可选项.指定将数字值转换为字符串时的进制. join是其中一个方法. 格式:objArray.joi

八元数与矢量的转换问题

问题描述 八元数与矢量的转换问题 怎样将一个直角坐标系坐标表示的矢量(X,Y,Z)转换成八元数的形式? (ps:八元数也就是clifford代数)

关于Java中bytes到String的转换

    为什么想要写这个,是因为在上周,表格存储的一个客户,告知我们在将数据通过DataX从OTS导出到ODPS后,发现数据『丢失』了.而在调查过后,发现数据并不是所谓的『丢失』了,而是数据被『改变』了.     什么原因导致数据发生了『改变』呢?却是因为一个大部分Java程序员都会忽略的问题导致的,所以我觉得有必要单独拿出来讲讲. 首先看下如下代码: byte[] original1 = new byte[]{(byte)0xef, (byte)0x8f, (byte)0x8f}; byte[

java-传递ImageView数组到bitmap

问题描述 传递ImageView数组到bitmap 如题,如何传递? ImageView数组: private Integer[] Imgid = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, }; Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),**R.drawable.pic1[]???**); 解决方案 ImageVie

FFMPEG内存操作(二)从内存中读取数及数据格式的转换

相关博客列表:     FFMPEG内存操作(一) avio_reading.c 回调读取数据到内存解析      FFMPEG内存操作(二)从内存中读取数及数据格式的转换      FFmpeg内存操作(三)内存转码器     在雷神的<最简单的基于FFmpeg的内存读写例子(内存播放器)>中,它是设计回调函数从输入文件中读取数据.与FFMPEG 官方给出的avio_reading.c不同的是,雷神给的例子是当需要数据的时候,回调函数才去从输入文件读取数据,而avio_reading.c 则