那个淘宝题,我用.NET重写的。比JAVA要简单

 http://student.csdn.net/space.php?uid=116484&do=blog&id=38988

原题如上:

 

我用的是VB.NET 2010,文件时我自己写的高达450K的LISTBOX表。VB显示的行数是11万行左右....

 

以下是我的源代码加注释,有注释我就不另外补充了。

需要控件:listbox x1 ,label x5 ,button x1。

 

源代码:

  1. Imports System.IO  
  2. Imports Microsoft.VisualBasic.FileIO  
  3.   
  4. Public Class Form1  
  5.   
  6.     Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load  
  7.         '初始化数据。或者说我懒得设置属性  
  8.         Label1.Text = "0"  
  9.         Label2.Text = "0"  
  10.         Label3.Text = "0"  
  11.         Label4.Text = "0"  
  12.         Label5.Text = "0"  
  13.     End Sub  
  14.   
  15.     Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As ObjectByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted  
  16.         '线程1,主要应付低档文件,本程序中忽略掉 - 笔者用来测试的  
  17.         For index = 1 To ListBox1.Items.Count - 1  
  18.             Label1.Text = Int(Label1.Text) + ListBox1.Items(index)  
  19.         Next  
  20.     End Sub  
  21.   
  22.     Private Sub BackgroundWorker2_RunWorkerCompleted(ByVal sender As ObjectByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker2.RunWorkerCompleted  
  23.         '线程2  
  24.         For index = 1 To Int(ListBox1.Items.Count / 4 * 1) '智能分段  
  25.             Label2.Text = Int(Label2.Text) + ListBox1.Items(index)  
  26.         Next  
  27.     End Sub  
  28.   
  29.     Private Sub BackgroundWorker3_RunWorkerCompleted(ByVal sender As ObjectByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker3.RunWorkerCompleted  
  30.         For index = Int(ListBox1.Items.Count / 4 * 1) To Int(ListBox1.Items.Count / 4 * 2)  
  31.             Label3.Text = Int(Label3.Text) + ListBox1.Items(index)  
  32.         Next  
  33.     End Sub  
  34.   
  35.     Private Sub BackgroundWorker4_RunWorkerCompleted(ByVal sender As ObjectByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker4.RunWorkerCompleted  
  36.         For index = Int(ListBox1.Items.Count / 4 * 2) To Int(ListBox1.Items.Count / 4 * 3)  
  37.             Label4.Text = Int(Label4.Text) + ListBox1.Items(index)  
  38.         Next  
  39.     End Sub  
  40.   
  41.     Private Sub BackgroundWorker5_RunWorkerCompleted(ByVal sender As ObjectByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker5.RunWorkerCompleted  
  42.         For index = Int(ListBox1.Items.Count / 4 * 3) To Int(ListBox1.Items.Count - 1)  
  43.             Label5.Text = Int(Label5.Text) + ListBox1.Items(index)  
  44.         Next  
  45.         Label1.Text = Int(Label2.Text) + Int(Label3.Text) + Int(Label4.Text) + Int(Label5.Text)  
  46.     End Sub  
  47.   
  48.     Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click  
  49.         '读文件到listbox1  
  50.         Dim filename As String = "C:/1.txt"  
  51.         Dim delimiter As String = ","  
  52.         Using parser As New TextFieldParser(filename)  
  53.             parser.SetDelimiters(delimiter)  
  54.             While Not parser.EndOfData  
  55.                 ListBox1.Items.Add(parser.ReadLine)  
  56.             End While  
  57.         End Using  
  58.   
  59.         Select Case ListBox1.Items.Count  '智能化判断  
  60.             Case Is <= "10000"  
  61.                 '启动线程  
  62.                 BackgroundWorker1.RunWorkerAsync()  
  63.             Case Is > "10000"  
  64.                 BackgroundWorker2.RunWorkerAsync()  
  65.                 BackgroundWorker3.RunWorkerAsync()  
  66.                 BackgroundWorker4.RunWorkerAsync()  
  67.                 BackgroundWorker5.RunWorkerAsync()  
  68.         End Select  
  69.     End Sub  
  70.   
  71. End Class  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值