【问题标题】:Best way to convert an array of integers to a string in Java在Java中将整数数组转换为字符串的最佳方法
【发布时间】:2011-04-13 07:34:39
【问题描述】:

在 Java 中,我有一个整数数组。有没有快速将它们转换为字符串的方法?

I.E. int[] x = new int[] {3,4,5} x toString() 应该产生“345”

【问题讨论】:

  • 所以{3, 45} 也产生"345"?你确定要这样做吗?您可能想退后一步,重新考虑您的设计。

标签: java arrays string integer


【解决方案1】:

最简单的高性能方法可能是 StringBuilder:

StringBuilder builder = new StringBuilder();
for (int i : array) {
  builder.append(i);
}
String text = builder.toString();

如果您发现自己在多个地方这样做,您可能想查看Guava's Joiner class - 尽管我不相信您可以将它用于原始数组。编辑:如下所述,您可以为此使用Ints.join

【讨论】:

  • 哇,我很幸运,我发现您对我的问题的回答只是您在 Stackoverflow 中的第 10000 个回答,对吗?恭喜!
  • 我对你的回答投了赞成票。但只是好奇?什么更昂贵(耗时)? StringBuilder.append(int) 或 y = y*10 + x; ?我知道原语只能在 Integer.MAX_VALUE 之前工作,但如果我们总是得到小于这个结果,那么什么会更好?
  • Guava 的 Joiner 不适用于 int 基元(它适用于 Objects),但 Ints.join("", intArray) 将:guava-libraries.googlecode.com/svn/tags/release09/javadoc/com/…
【解决方案2】:
   int[] x = new int[] {3,4,5};
   String s = java.util.Arrays.toString(x).replaceAll("[\\,\\[\\]\\ ]", "")

更新

为了完整起见,Java 8 Streams 解决方案并不美观(vavr 之类的库会更短更快):

String s = IntStream.of(x)
  .mapToObj(Integer::toString)
  .collect(Collectors.joining(""));

【讨论】:

    【解决方案3】:

    试试这个 - 你必须 import java.util.Arrays 然后 -

    String temp = Arrays.toString( intArray ).replace(", ", "");
    String finalStr = temp.substring(1, temp.length()-2);
    

    intArray 是您的整数数组。

    【讨论】:

    • 产生“[3,4,5]”,而不是“345”
    • @Landei - 是的,看到了......现在试试。现在已编辑答案
    • 现在将给出“3 4 5”而不是“345”。
    • @Jon Skeet - 是的。对不起,替换方法是添加空格。再次编辑。谢谢。
    • 就我个人而言,我宁愿使用我的五行简单代码,也不愿使用两行已经证明自己相对难以做到的代码:)
    【解决方案4】:
    StringBuffer str =new StringBuffer();
    for(int i:x){  
    str.append(i);
    }  
    

    您需要至少阅读一次。

    【讨论】:

      【解决方案5】:
      public static void main(String[] args) {
          int[] dice = {1, 2, 3, 4, 5, 0};
          String string = "";
      
          for (int i = 0; i < dice.length; i++) {
              string = string + dice[i];
          }
      
          System.out.print(string);   
      
      }
      

      这是另一种方法。基本上只是创建一个访问整数数组中的每个元素并将其添加到字符串的 for 循环。

      【讨论】:

        【解决方案6】:
         public static void main(String[] args) {
        
            System.out.println("Integer Value :" +convertIntToString(new int[]{3,4,5}));
        
          }
        
          public static String convertIntToString(int intArray[]) {
            List<Integer> listInteger = new ArrayList<Integer>();
        
            for (int i = 0; i < intArray.length; i++) {
                listInteger.add(intArray[i]);
            }
        
            Object o = listInteger;
        
            return String.valueOf(o).replace("[", "").trim().replaceAll(", ","").trim().replaceAll("\\]","").trim();
          }
        

        【讨论】:

        • 我这里用到了list
        【解决方案7】:
        public static void main(String[] args) {
            System.out.println("Integer Value :" +convertIntToString(new int[]{3,4,5}));
        }
        
        public static String convertIntToString(int intArray[]) {
            List<Integer> listInteger = new ArrayList<Integer>();
        
            for (int i = 0; i < intArray.length; i++) {
                listInteger.add(intArray[i]);
            }
        
            Object o = listInteger;
        
            return String.valueOf(o).replace("[", "").trim().replaceAll(", ","").trim().replaceAll("\\]","").trim();
        }
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-21
        • 1970-01-01
        • 2017-09-09
        • 2019-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多