【问题标题】:Generating a large list of strings to the console向控制台生成大量字符串列表
【发布时间】:2015-10-09 07:27:21
【问题描述】:

我正在尝试生成一个随机十六进制值列表(500000 以上)。我需要计算有多少唯一值,并且能够将十六进制复制并粘贴到文本文件中。但是,当我尝试从控制台复制值时,我会丢失字符串。例如,创建了 40000 个十六进制值,但控制台仅列出了大约 6000 个值。该程序适用于较小的数字,并且总是告诉我正确数量的唯一值。

   public class HexGenerator {
     private static String getRandomHexString(int numchars) {
       Random r = new Random();
       StringBuffer sb = new StringBuffer();
       while (sb.length() < numchars) {
         sb.append(Integer.toHexString(r.nextInt()));
       }

       return sb.toString().substring(0, numchars);
     }
     public static void main(String args[]) {
       LinkedList < String > address = new LinkedList < String > ();
       for (int x = 0; x < 40000; x++) {
         String a = getRandomHexString(4);
         System.out.println("7f1a9800" + a + " ");


         if (!address.contains(a))
           address.add(a);
       }
       System.out.println();
       System.out.println(address.size());
     }
   }

如何在控制台中打印所有字符串?

【问题讨论】:

  • 不要将它们打印到控制台:将程序的输出重定向到文件command &gt; output.txt
  • 顺便说一句,LinkedList 是检查重复项的一个糟糕的集合选择。包含操作是 O(n)。如果您不需要任何特定顺序的内容(例如,您只想检查包含),请使用 HashSet,它将 contains 实现为 O(1) 操作(如果您希望保留插入顺序,请使用 LinkedHashSet )。

标签: java string console


【解决方案1】:

您的控制台有其自身的限制。要将所有输出重定向到文本文件,请使用“java MyProgram > somefile.txt”(我相信适用于 Linux 和 Windows)。

【讨论】:

  • 我必须使用终端将所有输出写入文本文件还是可以使用 Eclipse?其次,被写入的文件是否已经存在?
  • 如果你使用&gt;,如果文件不存在则创建,如果存在则覆盖。
【解决方案2】:

如果您使用的是 Eclipse,请转到首选项 -> 运行/调试 -> 控制台并取消选择限制控制台输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多