java写的查找重复的电话号码程序
来源:互联网 发布:python map 编辑:程序博客网 时间:2024/04/30 06:43
作者:淘特网
出自:http://www.tot.name
注:转载请注明出处.
开发工具: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.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
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();
}
// </editor-fold>//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<vectors.size();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<resultArr.length;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-编程开发
- 重复的电话号码
- 【C++】重复的电话号码
- 电话号码的快速查找
- OJ 系列之重复的电话号码(C_C++)
- Android关于联系人电话号码的查找
- [VB.NET]谁能帮我用验证国内电话号码的正则表达式写一个验证程序啊?
- 使用bitmap对一个大小在一定范围内的无重复数据排序(比如电话号码)|在一个大小在一定范围内的数据集中查找重复数据
- 查找重复的索引
- 查找重复的数
- 查找重复的字符串
- Java的折半查找程序
- 二分法查找的JAVA程序
- JS写一个去除数组中重复元素的程序
- 写个可以自动执行重复动作的Android程序。
- JAVA 写的日历程序
- Java写的计算器程序
- Android ViewGroup深入研究
- 软件需求分析文档模版(转载自国家计算机标准和文件模板)
- ThinkPad 64位操作系统使用VMware时遇到Vt未打开的错误报警
- js document.createElement()的用法 (转)
- GetSystemMenu(FALSE)
- java写的查找重复的电话号码程序
- Design My Virtual Home 之畅想
- TCP协议多个用户同时上传图片到服务端
- android 系统音量设置
- WinSock I/O编程模型之——Select模型
- 正则表达式
- Linux Shell 只列出目录的方法
- C++获取Windows系统License信息的方法
- galaxy nexus android4.0.4编译rom GPS无法打开解决方法