四种方法把string[]转换为int[]

简介:

  最近看到一个题目,要把一个string[]转换为int[](当然,string[]中存的都是数字),然后写了个小程序玩儿了一下,目前用了四种方法,但方法的优劣不是那么明显:

 

         static   void  Main( string [] args)
        {
            
// 测试字符串
            StringBuilder test;
            
string [] str;
            
for  ( int  j  =   0 ; j  <   6 ; j ++ )
            {
                test 
=   new  StringBuilder();
                
for  ( int  i  =   1 ; i  <=  ( int )Math.Pow( 10 ,j + 1 ); i ++ )
                {
                    test.Append(i 
+   " , " );
                }
                test.Append(
" 1 " );
                Console.WriteLine(
" 元素个数为 " + ( int )Math.Pow( 10 , j  +   1 ) + " : " );

                str 
=  test.ToString().Split( ' , ' );
                StringToInt(str);
                StringToIntByLinq(str);
                StringToIntByArr(str);
                StringToIntByList(str);
                Console.WriteLine();
            }

            Console.Read();
        }

        
// 最简单的,用循环
         public   static   void  StringToInt( string [] str)
        {
            
long  t1  =  DateTime.Now.Ticks;
            
int [] intArr  =   new   int [str.Length];
            
for  ( int  i  =   0 ; i  <  str.Length;i ++  )
            {
                intArr[i] 
= Convert.ToInt32(str[i]);
            }
            Console.WriteLine(
" Loop Cost Time: "   +  (DateTime.Now.Ticks  -  t1));
        }

        
// 用Linq
         public   static   void  StringToIntByLinq( string [] str)
        {
            
long  t1  =  DateTime.Now.Ticks;
            
int [] intArr  =  str.Select(o  =>  Convert.ToInt32(o)).ToArray < int > ();
            Console.WriteLine(
" Linq Cost Time: "   +  (DateTime.Now.Ticks  -  t1));
        }

        
// 用.NET中的数组转换方法
         public   static   void  StringToIntByArr( string [] str)
        {
            
long  t1  =  DateTime.Now.Ticks;
            
int [] intArr  =  Array.ConvertAll < string int > (str, Convert.ToInt32);
            Console.WriteLine(
" Arr  Cost Time: "   +  (DateTime.Now.Ticks  -  t1));
        }

        
// 用泛型
         public   static   void  StringToIntByList( string [] str)
        {
            
long  t1  =  DateTime.Now.Ticks;
            
int [] intList  =  str.ToList < string > ().ConvertAll < int > (Convert.ToInt32).ToArray < int > ();
            Console.WriteLine(
" List Cost Time: "   +  (DateTime.Now.Ticks  -  t1));
        }

 

运行后效果为:

元素个数为10:
Loop Cost Time:0
Linq Cost Time:0
Arr  Cost Time:0
List Cost Time:0

元素个数为100:
Loop Cost Time:0
Linq Cost Time:0
Arr  Cost Time:0
List Cost Time:0

元素个数为1000:
Loop Cost Time:0
Linq Cost Time:0
Arr  Cost Time:0
List Cost Time:0

元素个数为10000:
Loop Cost Time:0
Linq Cost Time:156000
Arr  Cost Time:0
List Cost Time:0

元素个数为100000:
Loop Cost Time:468001
Linq Cost Time:468001
Arr  Cost Time:468001
List Cost Time:312000

元素个数为1000000:
Loop Cost Time:2496004
Linq Cost Time:2808005
Arr  Cost Time:2184004
List Cost Time:2340004

       大家如果有什么好的方法,也让我学习学习哦!



本文转自Artwl博客园博客,原文链接:http://www.cnblogs.com/artwl/,如需转载请自行联系原作者

相关文章
|
2月前
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`&quot;123abc&quot;`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。
|
2月前
正则表达式(有关String当中,有关正则的方法)
正则表达式(有关String当中,有关正则的方法)
|
6天前
|
数据安全/隐私保护
作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
该博客文章通过示例演示了如何使用session对象的`setAttribute`和`getAttribute`方法在不同页面间传递和显示用户的用户名和密码信息,并说明了如何设置会话的有效期。
作用域通信对象:session用户在登录时通过`void setAttribute(String name,Object value)`方法设置用户名和密码。点击登录按钮后,跳转到另外一个页面显示用户
|
7天前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
|
8天前
|
Dart
Dart基础:进制转换、int与string互转
Dart基础:进制转换、int与string互转
41 3
|
21天前
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
22 5
|
5天前
|
Dragonfly Dart NoSQL
Dart ffi 使用问题之在Dart中调用String的toNativeUtf8方法时有什么是需要注意的
Dart ffi 使用问题之在Dart中调用String的toNativeUtf8方法时有什么是需要注意的
|
28天前
|
XML Java API
List与String相互转化的方法有哪些
摘要:本文概述了Java中List转换为String及反之的多种策略。使用`String.join()`可简洁地连接List元素;`StringBuilder`提供灵活控制;Java 8 Stream API收集器简化操作;Apache Commons Lang3的`StringUtils.join()`和Guava的`Joiner.on()`支持外部库的高效转换。
|
1月前
|
安全 Java 索引
带你快速掌握Java中的String类和StringBuffer类(详解常用方法 | 区别 )
带你快速掌握Java中的String类和StringBuffer类(详解常用方法 | 区别 )
|
2月前
|
Java 数据处理 Apache
探讨Java中判断String类型为空和null的方法
探讨Java中判断String类型为空和null的方法
24 1