Этот совет Java иллюстрирует метод планирования таймера для задачи запустить повторно. Разработчик может использовать этот код, если есть необходимость выполнить или повторить задачу в заявку на предопределенный отрезок времени.


    int delay = 5000;   // delay for 5 sec.

    int interval = 1000;  // iterate every sec.

    Timer timer = new Timer();

    

    timer.scheduleAtFixedRate(new TimerTask() {

            public void run() {

                // Task here ...

            }

        }, delay, interval);

Сначала необходимо создать экземпляр класса Случайная:


   Random random = new Random();

Затем, вы можете получить случайное число, по телефонам:


   int pick = random.nextInt(maxvalue);

Это будет означать, значения от 0 (включительно) до MaxValue (эксклюзивные).

Для более сильного криптографического генератора псевдослучайных вы можете проверить java.security.SecureRandom класс. При этом абонент может указать имя алгоритма и (опционально) пакет услуг. Вот пример кода использования SecureRandom класс:


   SecureRandom random = SecureRandom.getInstance("SHA1PRNG")

   random.setSeed(seed)

   int randInt = random.nextInt(maxvalue);

Этот совет Java иллюстрирует метод планирования таймер для задач для запуска в определенное время. Разработчик может использовать этот код, если есть необходимость выполнить или повторить задачу в заявку на предопределенный отрезок времени.


    int interval = 10000// 10 sec

    Date timeToRun = new Date(System.currentTimeMillis() + interval);

    Timer timer = new Timer();

    

    timer.schedule(new TimerTask() {

            public void run() {

                // Task here ...

            }

        }, timeToRun);

Этот совет Java иллюстрирует метод реализации стека. Разработчик может использовать стек для хранения элементов в памяти. Stack использует первый в последнем из (Filo). Разработчик может понадобиться нажать и поп вставлять и извлекать данные элементы из стека.


    LinkedList stack = new LinkedList();

    

    // Push on top of stack

    stack.addFirst(object);

    

    // Pop off top of stack

    Object o = stack.getFirst();

    

    // In case multiple threads are using a stack 

    // there is a need to synchronize methods

    stack = (LinkedList)Collections.synchronizedList(stack);

Этот совет Java иллюстрирует способ создания хэш-таблицу. Хеш-таблица, как правило, использовались при поиске приложения. Хеш-таблица увеличивает эффективность поиска путем создания ключа, соответствующего значения в таблице.


    // Create a hash table

    Map map = new HashMap();    

    map = new TreeMap();        // sorted map

    

    // Add key/value pairs to the map

    map.put("x"new Integer(1));

    map.put("y"new Integer(2));

    map.put("z"new Integer(3));

    

    // Get number of entries in map

    int size = map.size();        // 2

    

    // Adding an entry whose key exists in the map causes

    // the new value to replace the old value

    Object oldValue = map.put("x"new Integer(9));  // 1

    

    // Remove an entry from the map and 

    // return the value of the removed entry

    oldValue = map.remove("c");  // 3

    

    // Iterate over all keys in the table 

    Iterator it = map.keySet().iterator();

    while (it.hasNext()) {

        // Retrieve key

        Object key = it.next();

    }

    

    // Iterate over all values in table 

    it = map.values().iterator();

    while (it.hasNext()) {

        // Get value

        Object value = it.next();

    }

Вы можете использовать INI-файл с помощью свойств класса в java.util пакет. Так как. INI-файлы имеют тот же формат, оф. Свойств файлов, вы можете достичь. INI-файлами, как идущие последствия. Свойствах файлов.


[INI file : user.ini]



DBuser=anonymous

DBpassword=&8djsx

DBlocation=bigone



[JAVA code]



import java.util.*;

import java.io.*;



class readIni {

  public static void main(String args[]) {

    readIni ini = new readIni();

    ini.doit();

    }



  public void doit() {

    try{

      Properties p = new Properties();

      p.load(new FileInputStream("user.ini"));

      System.out.println("user = " + p.getProperty("DBuser"));

      System.out.println("password = " + p.getProperty("DBpassword"));

      System.out.println("location = " + p.getProperty("DBlocation"));

      p.list(System.out);

      }

    catch (Exception e) {

      System.out.println(e);

      }

    }

}

Этот пример показывает, как вычислить 2 дней между датами.


import java.util.*;



public class TestDate {

  public static void main(String args[]){

    /*

     ex . 

       java TestDate 1999 0 1 1999 8 1

           to get days between 1999-01-01 and 1999-09-01

          (remember months are zero-based...)

   */

  

    TestDate a = new TestDate(args);

    }



  TestDate(String args[]) {

    Calendar c1 = new GregorianCalendar();;

    Calendar c2 = new GregorianCalendar();;



    //  need more error checking here...

    c1.set(Integer.parseInt(args[0]),

           Integer.parseInt(args[1]) 

           Integer.parseInt(args[2])000)

    c2.set(Integer.parseInt(args[3]),

          Integer.parseInt(args[4]) 

          Integer.parseInt(args[5])000)



    System.out.println

       (daysBetween(c1.getTime(),c2.getTime()) +

        " day(s) between " + args[0"-" + args[1"-" + args[2+

        " and " + args[3"-" + args[4"-" + args[5]);

    }



  static final long ONE_HOUR = 60 60 1000L;

  public long daysBetween(Date d1, Date d2){

    return ( (d2.getTime() - d1.getTime() + ONE_HOUR

                  (ONE_HOUR * 24));

     }   

  }

Карта является объект, который хранит ключ / объемом парами. Учитывая ключ, вы можете найти его значение. Ключи должны быть уникальными, но значения могут быть воспроизведены. Класс HashMap обеспечивает осуществление первичного карта интерфейса. Класс HashMap использует хэш-таблицу с осуществлением карта интерфейса. Это позволяет на время выполнения основных операций, таких, как получить () и положил (), чтобы быть постоянным.

Этот код показывает использование HaspMap. В этой программе карт HashMap имена остатков на счетах.


import java.util.*;



public class HashMapDemo {



  public static void main(String[] args) {



    HashMap hm = new HashMap();

    hm.put("Rohit"new Double(3434.34));

    hm.put("Mohit"new Double(123.22));

    hm.put("Ashish"new Double(1200.34));

    hm.put("Khariwal"new Double(99.34));

    hm.put("Pankaj"new Double(-19.34));

    Set set = hm.entrySet();



    Iterator i = set.iterator();



    while(i.hasNext()){

      Map.Entry me = (Map.Entry)i.next();

      System.out.println(me.getKey() " : " + me.getValue() );

    }



    //deposit into Rohit's Account

    double balance = ((Double)hm.get("Rohit")).doubleValue();

    hm.put("Rohit"new Double(balance + 1000));



    System.out.println("Rohit new balance : " + hm.get("Rohit"));



  }

}

Вывод на экран:

Rohit : 3434.34
Ashish : 1200.34
Pankaj : -19.34
Mohit : 123.22
Khariwal : 99.34
Rohit new balance : 4434.34

J2SE 5.0 добавляет классов и методов, которые можно делать каждый день задачи легче выполнять. В этом совете вы увидите, как недавно добавили java.util.Scanner класс делает его легче читать и анализировать строки и примитивных типов с использованием регулярных выражений.

Перед J2SE 5.0 релиз, вы, вероятно, пишет код, такой как следующий класс TextReader читать текст из файла:


   import java.io.BufferedReader;

   import java.io.FileReader;

   import java.io.IOException;

   import java.io.File;



   public class TextReader {

     private static void readFile(String fileName) {

       try {

         File file = new File(fileName);

         FileReader reader = new FileReader(file);

         BufferedReader in = new BufferedReader(reader);

         String string;

         while ((string = in.readLine()) != null) {

           System.out.println(string);

         }

         in.close();

       catch (IOException e) {

         e.printStackTrace();

       }

     }



     public static void main(String[] args) {

       if (args.length != 1) {

         System.err.println("usage: java TextReader "

           "file location");

         System.exit(0);

       }

       readFile(args[0]);

     }

   }

Основной подход в классах, как это создать файл, объект, соответствующий фактический файл на жестком диске. Класс затем создает FileReader связанный с файлом, а затем BufferedReader от FileReader. Затем он использует BufferedFile читателя прочитать файл по одной строке за раз.

Для просмотра класс TextReader в действии, вы должны создать документ для данного класса чтения и синтаксического анализа. Чтобы создать документ, сохранить следующие две строки текста в файле с именем TextSample.txt в том же каталоге, TextReader:

Here is a small text file that you will
use to test java.util.scanner.

Обобщение TextReader ". Затем запустите ее, введя следующее:

java TextReader TextSample.txt

Вы должны увидеть оригинальный файл повторил обратно к вам в стандартный вывод.

Вы можете упростить код в TextReader помощью java.util.Scanner класс, который разбирает примитивных типов и строк:


   import java.io.File;

   import java.io.FileNotFoundException;

   import java.util.Scanner;



   public class TextScanner {



     private static void readFile(String fileName) {

       try {

         File file = new File(fileName);

         Scanner scanner = new Scanner(file);

         while (scanner.hasNext()) {

           System.out.println(scanner.next());

         }

         scanner.close();

       catch (FileNotFoundException e) {

         e.printStackTrace();

       }

     }



     public static void main(String[] args) {

       if (args.length != 1) {

         System.err.println("usage: java TextScanner1"

           "file location");

         System.exit(0);

       }

       readFile(args[0]);

     }

   }

Обобщение TextScanner. Затем запустите его следующим образом:

java TextScanner TextSample.txt

Вы должны получить следующие результаты:

Here
is
a
small
text
file
that
you
will
use
to
test
java.util.scanner.

TextScanner создает объект сканер из файла. Сканер перерывы содержимое файла в лексемы помощью разделяющем шаблоне, по умолчанию разделителем шаблон пробелом. TextScanner затем вызывает hasNext () в сканере. Этот метод возвращает значение "истина, если другой знак существует во входных сканера, как это имеет место, пока не достигнет конца файла. Следующий () возвращает строку, которая представляет собой следующий жетон. Так до достижения конца файла, TextScanner печатает строку, вернулись к следующему () на отдельной строке.

Вы можете изменить разделители, используемые для Разбивает вход, через useDelimiter метода сканера. Вы можете передать в строку или java.util.regex.Pattern методу. См. страницу Javadocs за образец для информации о том, что модели могут быть применены. Например, вы можете прочитать ввод одной строке за раз, используя символ новой строки (\\ п) в качестве разделителя. Вот пересмотренный ReadFile () метод TextScanner который использует символы новой строки в качестве разделителя:


   private static void readFile(String fileName) {

     try {

       Scanner scanner = new Scanner(new File(fileName));

       scanner.useDelimiter

         (System.getProperty("line.separator"))

       while (scanner.hasNext()) {

         System.out.println(scanner.next());

       scanner.close();

     catch (FileNotFoundException e) {

       e.printStackTrace();

     }

   

Обратите внимание, что существуют и другие возможности для обнаружения конца строки. Можно, например, тест на линиях, которые заканчиваются символом новой строки или заканчиваться символом возврата каретки и символа новой строки. Вы можете сделать это с использованием регулярных выражений "\\ R \\ N | \\ N". Javadocs для java.util.regex.Pattern показаны другие возможные терминаторы строки, так что более полная проверка будет использовать выражение "\\ R \\ п | [\\ R \\ N \\ u2028 \\ u2029 \\ u0085]". Вы также можете использовать hasNextLine () и nextLine () методы из класса сканера. В любом случае, с пересмотренным TextScanner, результат должен соответствовать содержанию и макет TextSample.txt. Другими словами, вы должны увидеть следующее:

Here is a small text file that you will
use to test java.util.scanner.

Простой смене шаблона в разделитель используются сканер дает вам большую силу и гибкость. Например, если задать следующий разделитель:

scanner.useDelimiter("\\z");

В ней написано весь файл сразу. Это похоже на хитрость предложила Пэт Нимайер java.net в своем блоге. Вы можете читать все содержимое веб-страницы без создания нескольких промежуточных объектов. Код следующий класс, WebPageScanner, говорится в текущем содержании java.net Домашняя страница:


   import java.net.URL;

   import java.net.URLConnection;

   import java.io.IOException;

   import java.util.Scanner;



   public class WebPageScanner {

     public static void main(String[] args) {

       try {

         URLConnection connection =

           new URL("http://java.net").openConnection();

         String text = new Scanner(

           connection.getInputStream()).

           useDelimiter("\\Z").next();

       catch (IOException e) {

         e.printStackTrace();

       }

     }

   }

Вы можете обрабатывать более строк с классом сканера. Вы также можете использовать сканер для анализа данных, который состоит из примитивов. Чтобы проиллюстрировать это, сохранить следующие три строки в файле с именем Employee.data (в том же каталоге, TextSample):

Joe, 38, true
Kay, 27, true
Lou, 33, false

Вы все еще рассматривает это как одно большое струнных и выполнять переходы после разбора строки. Вместо этого, вы можете разобрать этот файл в два этапа. Это показано в следующем классе, DataScanner:


   import java.util.Scanner;

   import java.io.File;

   import java.io.FileNotFoundException;



   public class DataScanner {



     private static void readFile(String fileName) {

       try {

         Scanner scanner =

           new Scanner(new File(fileName));

         scanner.useDelimiter

           (System.getProperty("line.separator"))

         while (scanner.hasNext()) {

           parseLine(scanner.next());

         }

         scanner.close();

       catch (FileNotFoundException e) {

         e.printStackTrace();

       }

     }



     private static void parseLine(String line) {

       Scanner lineScanner = new Scanner(line);

      lineScanner.useDelimiter("\\s*,\\s*");

       String name = lineScanner.next();

       int age = lineScanner.nextInt();

       boolean isCertified = lineScanner.nextBoolean();

       System.out.println("It is " + isCertified +

         " that " + name + ", age "

         + age + ", is certified.");

     }



     public static void main(String[] args) {

       if (args.length != 1) {

         System.err.println("usage: java TextScanner2"

           "file location");

         System.exit(0);

       }

       readFile(args[0]);

     }

   }

Космический объект в DataScanner Сканер считывает файл по одной строке за раз. ReadFile () метод проходит каждую строку второго сканера. Второй сканера анализирует разделенные запятыми данные и удаляет пробелы с обеих сторон запятыми. Существуют варианты hasNext () и Next () методы, которые позволят вам проверить является ли следующий маркер определенного типа и пытаться лечить следующий знак в качестве примера такого рода. Например, nextBoolean () пытается относиться к следующей лексемы как логическое и пытается сопоставить его либо строка "Правда" или строку "ложным". Если матч не может быть сделано, генерируется java.util.InputMismatchException. ParseLine () Метод DataScanner показано, как каждая строка анализируется в строку, INT, и логическое значение.

Обобщение DataScanner. Затем запустите его следующим образом:

java DataScanner Employee.data

Вы должны получить следующие результаты:

It is true that Joe, age 38, is certified.
It is true that Kay, age 27, is certified.
It is false that Lou, age 33, is certified.

Можно было бы попытаться использовать только запятой в качестве разделителя. Другими словами, вы можете попробовать следующее:

lineScanner.useDelimiter(",");

Это приведет к InputMismatchException. Это потому, что дополнительное пространство будет включено в знак того, что вы пытаетесь преобразовать в логические и пространства не совпадают ни с "истинным" или "ложь". Как и в случае со всеми приложениями регулярных выражений, основная власть требует, чтобы вы Уделите побольше внимания при построении вашей модели.

Для более подробной информации о сканере, см. официальную документацию.

Copyright (C) 2004-2005 Sun Microsystems, Inc
Все права защищены.