将字符串转换为List

时间:2014-10-01 19:43:07

标签: java string

String "[1,2,3]"转换为List<Long>是否有一种不那么混乱的方法?我试图找到一些好的方法,但大多数步骤

5 个答案:

答案 0 :(得分:5)

由于这是数组的JSON表示,因此您可以使用任何JSON api。

例如使用Jackson

String s = "[1,2,3]";
long[] a = new ObjectMapper().reader(long[].class).readValue(s);
List<Long> l = new ObjectMapper().reader(List.class).readValue(s);

答案 1 :(得分:1)

一种巧妙的方法是

String s = "[1,2,3]"
s=s.sbustring(1,s.length-1);
List<Long> numLongs = new ArrayList<Long>();
for(String eachString: s.split(",")){
    try {
        numLongs.add(Long.parseLong(eachString))
    } catch (NumberFormatException e){
        System.out.println("failed to convert : "+s); 
    }
}

答案 2 :(得分:0)

怎么样?

String x = "[1,2,3]";
List<Long> myList = new ArrayList<>();
for(String s : x.substring(1,x.length()-1).split(",")) {
    myList.add(Long.valueOf(s));
}

String x = "[1,2,3]";
List<Long> myList = new ArrayList<>();
for(String s : x.replaceAll("\\[|\\]","").split(",")) {
    myList.add(Long.valueOf(s));
}

答案 3 :(得分:0)

这样做:

public static void main(String[] args) {

        String str= "[1,2,3]";
        String []arr=str.substring(1, str.length()-1).split(",");
        List<Long>list=new ArrayList<Long>();
       for(int i=0;i<arr.length;i++){
           list.add(Long.parseLong(arr[i]));
       }
       System.out.println(list);

    }

答案 4 :(得分:0)

在Java 8中

    String str = "1,2,3";
    String[] sp = str.split(",");
    List<String> listSt = Arrays.asList(sp);
    listSt.forEach(System.out::print);
    List<Long> listLong = listSt.stream().map( str1 -> Long.parseLong(str1)).collect(Collectors.toList());
    listLong.forEach(System.out::print);