开发工具:netbeans 4.1
说明:
此程序大体流程
1。打开一个含有多个重复记录的电话号码的文件。
2。系统按行读取文件并添加到向量vectors中,注意此时将电话号码转为long型。
3。新建一个long型数组,大小为vectors.size。并将vectors数据复制到这个数组中。
4。对上面的数组进行排序。
5。新建一个long型数组二,大小为vectors.size。
6。循环遍历数组一,并对比是否数组二中已有数据,如没有,则添加到数组二,否则跳过。
测试一万条记录的执行时间为不到2s。
/*
* main.java
*
* created on 2006年2月13日, 下午2:07
*/
package phoneutil;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
/**
*
* @author http://www.tot.name
*/
public class main extends javax.swing.jframe {
private vector vectors=new vector();
long[] resultarr=null;
/** creates new form main */
public main() {
initcomponents();
this.setsize(405,400);
this.settitle("电话号码查询");
this.setresizable(false);
}
/** this method is called from within the constructor to
* initialize the form.
* warning: do not modify this code. the content of this method is
* always regenerated by the form editor.
*/
//
private void initcomponents() {
jfilechooser1 =new jfilechooser();
desktoppane = new javax.swing.jdesktoppane();
jpanel1 = new javax.swing.jpanel();
jscrollpane1 = new javax.swing.jscrollpane();
jscrollpane2 = new javax.swing.jscrollpane();
jtextarea1 = new javax.swing.jtextarea();
jtextarea2 = new javax.swing.jtextarea();
menubar = new javax.swing.jmenubar();
filemenu = new javax.swing.jmenu();
openmenuitem = new javax.swing.jmenuitem();
savemenuitem = new javax.swing.jmenuitem();
saveasmenuitem = new javax.swing.jmenuitem();
exitmenuitem = new javax.swing.jmenuitem();
editmenu = new javax.swing.jmenu();
cutmenuitem = new javax.swing.jmenuitem();
copymenuitem = new javax.swing.jmenuitem();
pastemenuitem = new javax.swing.jmenuitem();
deletemenuitem = new javax.swing.jmenuitem();
helpmenu = new javax.swing.jmenu();
contentmenuitem = new javax.swing.jmenuitem();
aboutmenuitem = new javax.swing.jmenuitem();
setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);
jpanel1.setlayout(new java.awt.borderlayout());
jtextarea1.setcolumns(35);
jtextarea1.setrows(15);
jtextarea1.settabsize(4);
jscrollpane1.setviewportview(jtextarea1);
jpanel1.add(jscrollpane1, java.awt.borderlayout.center);
jtextarea2.setcolumns(35);
jtextarea2.setrows(5);
jscrollpane2.setviewportview(jtextarea2);
jpanel1.add(jscrollpane2, java.awt.borderlayout.south);
jpanel1.setbounds(0, 0, 400, 280);
desktoppane.add(jpanel1, javax.swing.jlayeredpane.default_layer);
getcontentpane().add(desktoppane, java.awt.borderlayout.center);
filemenu.settext("文件");
filemenu.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
filemenuactionperformed(evt);
}
});
openmenuitem.settext("打开");
openmenuitem.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
openmenuitemactionperformed(evt);
}
});
filemenu.add(openmenuitem);
savemenuitem.settext("保存");
savemenuitem.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
savemenuitemactionperformed(evt);
}
});
filemenu.add(savemenuitem);
//saveasmenuitem.settext("save as ...");
//filemenu.add(saveasmenuitem);
exitmenuitem.settext("exit");
exitmenuitem.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
exitmenuitemactionperformed(evt);
}
});
filemenu.add(exitmenuitem);
menubar.add(filemenu);
editmenu.settext("edit");
cutmenuitem.settext("cut");
editmenu.add(cutmenuitem);
copymenuitem.settext("copy");
editmenu.add(copymenuitem);
pastemenuitem.settext("paste");
editmenu.add(pastemenuitem);
deletemenuitem.settext("delete");
editmenu.add(deletemenuitem);
menubar.add(editmenu);
helpmenu.settext("help");
contentmenuitem.settext("contents");
helpmenu.add(contentmenuitem);
aboutmenuitem.settext("about");
aboutmenuitem.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(java.awt.event.actionevent evt) {
aboutmenuitemactionperformed(evt);
}
});
helpmenu.add(aboutmenuitem);
menubar.add(helpmenu);
setjmenubar(menubar);
pack();
}
// //gen-end:initcomponents
private void aboutmenuitemactionperformed(java.awt.event.actionevent evt) {//gen-first:event_aboutmenuitemactionperformed
// todo 将在此处添加您的处理代码:
joptionpane.showmessagedialog(null,"find phone num by repeated.","关于",joptionpane.warning_message);
}//gen-last:event_aboutmenuitemactionperformed
private void openmenuitemactionperformed(java.awt.event.actionevent evt) {//gen-first:event_openmenuitemactionperformed
string strfileopen="";
string linestr=null;
string returnstr=null;
stringbuffer sbf=new stringbuffer();
stringbuffer bf2=new stringbuffer();
long[] intarr=null;
//jfilechooser1 =new jfilechooser();
try{
if(this.jfilechooser1.approve_option==this.jfilechooser1.showopendialog(this)){
strfileopen=this.jfilechooser1.getselectedfile().getpath();
this.settitle(strfileopen);
try{
file files=new file(strfileopen.tostring());
vectors.removeallelements();
inputstreamreader read =new inputstreamreader(new fileinputstream(files),"gb2312");
//bufferedreader br=new bufferedreader(new filereader(filepath.tostring()));
bufferedreader br=new bufferedreader(read);
while((linestr=br.readline())!=null){
//returnstr=returnstr+line+"/n/r";
//line=br.readline();
//处理字符并添加到向量中
vectors.add(new long(linestr));
//sbf.append("/n/r");
}
intarr=new long[vectors.size()];
resultarr=new long[vectors.size()];
vectors.copyinto(intarr);
arrays.sort(intarr);
int startindex=1;
resultarr[0]=intarr[0];
//system.out.println(resultarr[0]+":"+intarr[0]);
for(int j=1;j
//system.out.println(resultarr[startindex-1]+":"+intarr[j]);
if(resultarr[startindex-1].compareto(intarr[j])==0){
bf2.append(intarr[j]+"/n/r");
}
else{
sbf.append(intarr[j]+"/n/r");
resultarr[startindex]=intarr[j];
startindex++;
}
//startindex++;
}
jtextarea1.settext("处理后的结果为:/n/r"+sbf.tostring());
jtextarea2.settext("重复的电话号码有:/n/r"+bf2.tostring());
}
catch(ioexception e){
system.out.println("file open error"+e.getmessage());
}
//this.statubar.settext("open file:"+this.filename);
}
else
{
return ;
}
}
catch(exception e){
//this.statubar.settext("error open:"+e.getmessage());
}
}//gen-last:event_openmenuitemactionperformed
private void savemenuitemactionperformed(java.awt.event.actionevent evt) {//gen-first:event_openmenuitemactionperformed
file filename=null;
string strfileopen=null;
printwriter output=null;
try{
if(this.jfilechooser1.approve_option==this.jfilechooser1.showsavedialog(this)){
strfileopen=this.jfilechooser1.getselectedfile().getpath();
this.settitle(strfileopen);
filename = jfilechooser1.getselectedfile();
this.settitle("保存至:"+filename.getname());
try{
output = new printwriter(filename);
for(int i=0;i
if(resultarr[i]!=null){
output.write(resultarr[i]+"/r/n");
}
}
jtextarea1.settext("成功保存至:/n/r"+strfileopen);
}
catch(ioexception e){
}
finally{
output.close();
output = null;
}
}
}
catch(exception e){
}
}
//gen-last:event_openmenuitemactionperformed
private void filemenuactionperformed(java.awt.event.actionevent evt) {//gen-first:event_filemenuactionperformed
// todo 将在此处添加您的处理代码:
}//gen-last:event_filemenuactionperformed
private void exitmenuitemactionperformed(java.awt.event.actionevent evt) {//gen-first:event_exitmenuitemactionperformed
system.exit(0);
}//gen-last:event_exitmenuitemactionperformed
//交换位置
private void swap(int loc1, int loc2){
object tmp = vectors.elementat(loc1);
vectors.setelementat(vectors.elementat(loc2),loc1);
vectors.setelementat(tmp,loc2);
}
/**
* @param args the command line arguments
*/
public static void main(string args[]) {
java.awt.eventqueue.invokelater(new runnable() {
public void run() {
new main().setvisible(true);
}
});
}
private javax.swing.jfilechooser jfilechooser1;
// 变量声明 - 不进行修改//gen-begin:variables
protected javax.swing.jmenuitem aboutmenuitem;
protected javax.swing.jmenuitem contentmenuitem;
protected javax.swing.jmenuitem copymenuitem;
protected javax.swing.jmenuitem cutmenuitem;
protected javax.swing.jmenuitem deletemenuitem;
protected javax.swing.jdesktoppane desktoppane;
protected javax.swing.jmenu editmenu;
protected javax.swing.jmenuitem exitmenuitem;
protected javax.swing.jmenu filemenu;
protected javax.swing.jmenu helpmenu;
protected javax.swing.jpanel jpanel1;
protected javax.swing.jscrollpane jscrollpane1;
protected javax.swing.jscrollpane jscrollpane2;
protected javax.swing.jtextarea jtextarea1;
protected javax.swing.jtextarea jtextarea2;
protected javax.swing.jmenubar menubar;
protected javax.swing.jmenuitem openmenuitem;
protected javax.swing.jmenuitem pastemenuitem;
protected javax.swing.jmenuitem saveasmenuitem;
protected javax.swing.jmenuitem savemenuitem;
// 变量声明结束//gen-end:variables
}
附图:


闽公网安备 35060202000074号