Java写的查找重复电话号码程序-Java基础-Java-编程开发
来源:互联网 发布:新星群发软件 编辑:程序博客网 时间:2024/04/30 02:10
开发工具: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);
/** 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();
}
//
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
}
附图:
- Java写的查找重复电话号码程序-Java基础-Java-编程开发
- java写的查找重复的电话号码程序
- 写Java程序最容易犯的21种错误-Java基础-Java-编程开发
- 谈谈JAVA程序的反编译-Java基础-Java-编程开发
- java中删除数据库中重复数据的几个方法-Java基础-Java-编程开发
- 面向Java程序员的Ajax:构建动态Java程序-Java基础-Java-编程开发
- Java 程序编码规范-Java基础-Java-编程开发
- 程序人生:Java三个月—OOP的乐趣-Java基础-Java-编程开发
- 漫谈Java程序的性能优化-Java基础-Java-编程开发
- Java实现利用搜索引擎收集网址的程序-Java基础-Java-编程开发
- java处理重复电话号码文件(修改版)
- Java基础-创建Java程序中的线程池-Java基础-Java-编程开发
- Java查找重复数据
- 书评:Java的盛宴(上)-Java基础-Java-编程开发
- 书评:Java的盛宴(中)-Java基础-Java-编程开发
- 书评:Java的盛宴(下)-Java基础-Java-编程开发
- Java Web 框架的"甜点"-Java基础-Java-编程开发
- MD5的Java Bean实现-Java基础-Java-编程开发
- 比较 .NET 和 Java-Java基础-Java-编程开发
- JAVA 和.NET在安全功能的比较-Java基础-Java-编程开发
- 十年之后 Java技术的新方向-Java基础-Java-编程开发
- 全面分析Java的垃圾回收机制-Java基础-Java-编程开发
- Java理论和实践:用软引用阻止内存泄漏-Java基础-Java-编程开发
- Java写的查找重复电话号码程序-Java基础-Java-编程开发
- 全面理解Java中的String数据类型-Java基础-Java-编程开发
- Java 5.0 多线程编程实践-Java基础-Java-编程开发
- 在Java程序中实现高精度打印-Java基础-Java-编程开发
- JSF的中文化与国际化的简便方法-Java基础-Java-编程开发
- 漫谈Java程序的性能优化-Java基础-Java-编程开发
- MD5的Java Bean实现-Java基础-Java-编程开发
- JAVA:MD5加密器-Java基础-Java-编程开发
- JAVA 的MD5加密算法源代码-Java基础-Java-编程开发