zoukankan      html  css  js  c++  java
  • 检查随机序列重复[Java]

    呃。。。。代码编辑坏了- -!

    /*
     * @(#)Main.java
     * Author: 88250 <DL88250@gmail.com>, http://blog.csdn.net/DL88250
     * Created on May 13, 2008, 4:11:44 PM
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 3 of the License, or
     * (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     * GNU Library General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     */
    package checkthesame;

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Random;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    /**
     * Check the same record in a file.
     * <p>
     * Every record in data file is a random serial, like the followings:<br>
     * // data file
     * 1902323484354370234844<br>
     * 1928473090393719374<br>
     * ....<br>
     * </p>
     * @author 88250 <DL88250@gmail.com>, http://blog.csdn.net/DL88250
     */
    public class Main {

        /**
         * store the data records
         */
        public static List<String> records = new ArrayList<String>();
        /**
         * statistics
         */
        public static List<List<String>> statistics = new ArrayList<List<String>>();

        /**
         * Read the records from the data file which named "data.txt" into memory,
         * using a <code>java.util.ArrayList</code> store them.
         * @see #records
         */
        public static void readRecords() {
            System.out.println("Get starting read records....");
            try {
                BufferedReader reader = new BufferedReader(
                        new FileReader("data.txt"));
                String aLine;
                while ((aLine = reader.readLine()) != null) {
                    records.add(aLine);
                }
                reader.close();
            } catch (IOException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
            System.out.println("The amount of records: " + records.size());
        }

        /**
         * Create some records for test.
         */
        public static void createTestRecords() {
            File file = new File("data.txt");
            if (file.exists()) {
                file.delete();
            }

            try {
                BufferedWriter writer =
                        new BufferedWriter(new FileWriter("data.txt"));

                Random random = new Random();
                byte[] bytes = new byte[16];
                for (int i = 0; i < 1000000; i++) {
                    StringBuffer aLine;
                    random.nextBytes(bytes);
                    aLine = new StringBuffer();
                    for (int j = 0; j < 16; j++) {
                        aLine.append((int) bytes[j]);
                    }

                    // System.out.println(aLine);

                    writer.write(aLine.toString());
                    //System.out.println();
                    writer.newLine();
                }
                writer.close();
            } catch (IOException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        /**
         * Main program entry.
         * @param args the command line arguments, should be <code>null</code>
         */
        public static void main(String[] args) {
            createTestRecords();
            readRecords();
            displayRecords(10);
            checkTheSame();
        }

        /**
         * Check the same data records in {@link #records}.
         */
        public static void checkTheSame() {
            sortTheRecords();   // sort them

            // displayRecords(10);
            for (int i = 0; i < records.size() - 1; i++) {
                String record1 = records.get(i);
                String record2 = records.get(i + 1);
                if (record1.equals(record2)) {
                    List<String> equalities = new ArrayList<String>();
                    equalities.add(record1);
                    equalities.add(record2);
                    statistics.add(equalities);
                }
            }
            displayStats();
        }

        /**
         * Display the data records in console.
         * @param amount display amount, start from {@link #records}'s beginning
         */
        public static void displayRecords(int amount) {
            if (amount < 0 || amount > records.size()) {
                System.out.println("The specified amount exceeds the Data records" +
                        "size!");
            }
            System.out.println("Display: ");
            for (int i = 0; i < amount; i++) {
                System.out.println(records.get(i));
            }
            System.out.println();
        }

        /**
         * Display the statistic results in console.
         */
        private static void displayStats() {
            System.out.println("Statistics: ");
            System.out.println("A amount of the same data records: " + statistics.
                    size());
            for (List<String> aEqualities : statistics) {
                System.out.println(aEqualities.get(0) + " occurs " + aEqualities.
                        size());
            }
        }

        /**
         * Using {@link java.util.Collections#sort(java.util.List)} to sort the
         * data records.
         */
        @SuppressWarnings("unchecked")
        private static void sortTheRecords() {
            java.util.Collections.sort(records,
                    new Comparator() {

                        @Override
                        public int compare(Object o1,
                                Object o2) {
                            String r1 =
                                    (String) o1;
                            String r2 =
                                    (String) o2;
                            return r1.compareTo(r2);
                        }
                    });
        }
    }
  • 相关阅读:
    OC-为何用copy修饰block
    OC-RunLoop运行循环
    苹果审核之遇到IPV6问题被拒的解决方法
    LeetCode学习_day1:原地算法
    OC-加载h5富文本的代码,并计算高度
    OC-bug: Undefined symbols for architecture i386: "_OBJC_CLASS_$_JPUSHRegisterEntity", referenced from:
    了解iOS各个版本新特性总结
    iOS 快速打包方法
    iOS tableView侧滑删除的第三方控件
    Object_C 集成环信时,中文环境下不显示中文
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470280.html
Copyright © 2011-2022 走看看