CollectionsСводка

искусственный интеллект

Компараторы

package aaa;

import java.util.Comparator;

public class ComparatorByLength implements Comparator<String> {

         public int compare(String o1, String o2) {

                  String s1 = (String) o1;

                  String s2 = (String) o2;

                  int temp = s1.length() - s2.length();

                  return temp == 0 ? s1.compareTo(s2) : temp;

         }

}

package aaa;

 

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

import java.util.TreeSet;

public class ListDemo {

         public static void main(String[] args) {

                  // TODO Auto-generated method stub

                  demo_1();

                  demo_2();

                  demo_3();

                   Demo4();

         }

         public static void Demo4() {

                  List<String> list = new ArrayList<String>();

                  list.add("abcde");

                  list.add("cba");

                  list.add("zhangsan");

                  list.add("zhaoliu");

                  list.add("xiaoqiang");

                  System.out.println(list);

Collections.replaceAll(list, "cba", "NBA");// Набор принципов(indexOf("cba"),"nba");

                  System.out.println(list);

Collections.shuffle(list);//Переставляет указанный список с указанным случайным источником.

                  System.out.println(list);

Collections.fill(list, "cc");//Заменяем все элементы в списке на cc, этот метод используется для инициализации коллекции

                  System.out.println(list);

         }

         public static void demo_3() {

// обратный порядок по компаратору

                  TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() {

                          @Override

                          public int compare(String o1, String o2) {

                                   int temp = o2.compareTo(o1);

                                   return temp;

                          }

                  });

                  ts.add("abc");

                  ts.add("hahaha");

                  ts.add("zzz");

                  ts.add("aa");

                  ts.add("cba");

                  System.out.println(ts);

// Используйте методы класса инструмента для реализации сортировки с переворотом, а правила сортировки основаны на компараторе.

                  TreeSet<String> ts1 = new TreeSet<String>(

                                   Collections.reverseOrder(new ComparatorByLength()));

                  ts1.add("abc");

                  ts1.add("hahaha");

                  ts1.add("zzz");

                  ts1.add("aa");

                  ts1.add("cba");

                  System.out.println(ts1);

         }

         /**

* Сортировка инструментов сбора

          */

         public static void demo_1() {

                  List<String> list = new ArrayList<String>();

                  list.add("abcde");

                  list.add("cba");

                  list.add("aa");

                  list.add("zzz");

                  list.add("cba");

                  list.add("nbaa");

                  System.out.println(list);

                  Collections.sort(list);

mySort(list);// Принцип реализации Collections.sort(list)

                  System.out.println(list);

                  Collections.sort(list, new ComparatorByLength());

                  mySort(list, new ComparatorByLength());

                  System.out.println(list);

         }

         public static <T> void mySort(List<T> list, Comparator<? super T> comp) {

                  for (int i = 0; i < list.size() - 1; i++) {

                          for (int j = i + 1; j < list.size(); j++) {

                                   if (comp.compare(list.get(i), list.get(j)) > 0) {

                                            Collections.swap(list, i, j);

                                   }

                          }

                  }

         }

         /**

          * @param list

Принцип реализации Collections.sort(list), T extends Comparable

T> означает, что все типы интерфейсов, реализующие Comparable, или типы, родительский класс которых реализует интерфейс Comparable

          */

         public static <T extends Comparable<? super T>> void mySort(List<T> list) {

                  for (int i = 0; i < list.size() - 1; i++) {

                          for (int j = i + 1; j < list.size(); j++) {

                                   if (list.get(i).compareTo(list.get(j)) > 0) {

Collections.swap(list, i, j);//Поменять местами

                                   }

                          }

                  }

         }

         public static void demo_2() {

                  List<String> list = new ArrayList<String>();

                  list.add("abcde");

                  list.add("cba");

                  list.add("aa");

                  list.add("zzz");

                  list.add("cba");

                  list.add("nbaa");

                  System.out.println(list);

                  Collections.sort(list);

                  int index = Collections.binarySearch(list, "cba");

                  System.out.println("index=" + index);

                  String max = Collections.max(list, new ComparatorByLength());

                  System.out.println("max=" + max);

         }

}

 

 

 

 

 

 

 

 

Класс java.util.Arrays может легко манипулировать массивами, и все предоставляемые им методы являются статическими. Имеет следующие функции:

  • Присваивать значения массивам: через метод fill.
  • Отсортировать массив: по методу сортировки, в порядке возрастания.
  • Сравните массивы: сравните элементы массива на равенство с помощью метода equals.
  • Найти элементы массива. Метод бинарного поиска можно использовать для выполнения операций бинарного поиска в отсортированных массивах.

import java.util.Arrays;

public class TestArrays {

public static void output(int[] array) {

if (array!=null) {

for (int i = 0; i < array.length; i++) {

System.out.print(array[i]+" ");

}

}

System.out.println();

}

public static void main(String[] args) {

int[] array = new int[5];

// заполняем массив

Arrays.fill(array, 5);

System.out.println("заполнить массив: Arrays.fill(массив, 5): ");

TestArrays.output(array);

// Присваиваем 2-му и 3-му элементам массива значение 8

Arrays.fill(array, 2, 4, 8);

System.out.println("Назначить второму и третьему элементам массива значение 8: Arrays.fill(array, 2, 4, 8): ");

TestArrays.output(array);

int[] array1 = {7,8,3,2,12,6,3,5,4};

// сортируем со 2-го по 6-й массив для сортировки

Arrays.sort(array1,2,7);

System.out.println("Отсортируйте элементы массива со 2-го по 6-й для сортировки: Arrays.sort(array,2,7):");

TestArrays.output(array1);

//сортируем весь массив

Arrays.sort(array1);

System.out.println("Отсортировать весь массив: Arrays.sort(array1): ");

TestArrays.output(array1);

//Сравнить элементы массива на равенство

System.out.println("Сравнить элементы массива на равенство: Arrays.equals(array, array1):"+"\n"+Arrays.equals(array, array1));

int[] array2 = array1.clone();

System.out.println("Являются ли элементы массива равными после клонирования: Arrays.equals(array1, array2):"+"\n"+Arrays.equals(array1, array2));

//Используем алгоритм бинарного поиска, чтобы найти индекс, в котором находится указанный элемент (должен быть отсортирован, иначе результат будет неверным)

Arrays.sort(array1);

System.out.println("Позиция элемента 3 в array1: Arrays.binarySearch(array1, 3): "+"\n"+Arrays.binarySearch(array1, 3));

//Если не существует, возвращаем отрицательное число

System.out.println("Позиция элемента 9 в array1: Arrays.binarySearch(array1, 9): "+"\n"+Arrays.binarySearch(array1, 9));

}

}

Выходной результат:

Заполните массив: Arrays.fill(array, 5) : 5 5 5 5 5
поставить первый из массива 2 и 3 элементы назначаются как 8 : Arrays.fill(array, 2, 4, 8) : 5 5 8 8 5
первый из массива 2 к 6 Сортировать элементы для сортировки: Arrays.sort(array,2,7) :
7 8 2 3 3 6 12 5 4
Отсортируйте весь массив: Arrays.sort(array1) : 2 3 3 4 5 6 7 8 12
Сравнивает элементы массива на равенство :Arrays.equals(array, array1):
false
Равны ли элементы массива после клонирования :Arrays.equals(array1, array2):true
элемент 3 существует array1 расположение в: Arrays.binarySearch(array1, 3) : 1
элемент 9 существует array1 расположение в: Arrays.binarySearch(array1, 9) : -9

  1. Преобразовать массив в коллекцию List

package aaa;

import java.util.Arrays;

import java.util.List;

public class ArraysDemo {

   public static void main(String[] args) {

           demo_1();

           demo_2();

   }

   /**

* Метод Arrays.asList преобразует массив в коллекцию List.

    */

   public static void demo_1()

   {/*

* Ключевой момент: список как список (массив) преобразует массив в коллекцию.

* Преимущество: на самом деле вы можете использовать метод коллекции для управления элементами массива.

* Примечание: длина массива фиксирована, поэтому нельзя использовать методы добавления и удаления наборов.

* * В противном случае возникнет исключение UnsupportedOperationException.

            */

           String[] arrStrings={"abc","haha","xixi"};

           List<String> list=Arrays.asList(arrStrings);

           boolean b1=list.contains("xixi");

           //list.add("hehe");//UnsupportedOperationException

           System.out.println("list contains="+b1);

   }

   public static void demo_2()

   {

           /*

* Если элементы массива являются объектами, то при преобразовании в коллекцию элементы массива сразу сохраняются как элементы коллекции.

* Если элементы массива являются примитивными значениями, массив сохраняется как элемент коллекции.

            */

           Integer[] arrIntegers={12,32,434,55,67,87};//

           List<Integer> list=Arrays.asList(arrIntegers);

System.out.println(list);//Результат вывода: [12, 32, 434, 55, 67, 87]

           int[] arr={31,11,51,61};

           List<int[]> list1=Arrays.asList(arr);

System.out.println(list1.toString());//Результат вывода: [[I@154ab8e4]

   }

}

  1. сбор в массив

package aaa;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

public class ToArray {

   public static void main(String[] args) {

           /*

* Как насчет преобразования коллекции в массив?

* Используется метод toArray в интерфейсе Collection.

* Преобразование коллекции в массив: вы можете ограничить методы работы с элементами коллекции. Добавления или удаления не допускаются.

            */

           List<String> list = new ArrayList<String>();

           list.add("abc1");

           list.add("abc2");

           list.add("abc3");

           /*

Метод * toArray должен передать массив указанного типа.

Как определить длину?

* Если длина меньше размера коллекции, этот метод создаст массив того же типа и того же размера, что и коллекция.

* Если длина больше, чем размер коллекции, то метод будет использовать указанный массив для хранения элементов в коллекции, другие местоположения по умолчанию равны нулю.

* Поэтому рекомендуется указывать окончательную длину как размер коллекции.

            */

           String[] arrStrings=list.toArray(new String[list.size()]);

System.out.println(Arrays.toString(arrStrings));//Результат вывода: [abc1, abc2, abc3]

   }

}

 

1. Формат:

for (переменная типа: коллекция коллекция | массив)

         {      

         }

Эквивалент foreach в C#

2. В чем разница между традиционным для и расширенным для?

Традиционный for может завершить выполнение инструкции много раз, потому что можно определить приращения и условия, управляющие циклом.

Advanced for — это упрощенная форма.

У него должна быть цель, которую нужно пройти. Целью является либо массив, либо коллекция из одного столбца Collection.

Для обхода логарифмических массивов вы можете использовать advanced for, если вы просто получаете элементы в массиве.

Если вы хотите работать с индексом массива, рекомендуется использовать традиционный for.

package aaa;

import java.util.ArrayList;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

public class ForEachDemo {

    public static void main(String[] args) {

        List<String> list = new ArrayList<String>();

        list.add("abc1");

        list.add("abc2");

        list.add("abc3");

        for(String s:list) {//Упрощение написания

            System.out.println(s);

        }

        int[] arr={2,3,3,4};

        for (int i :arr) {

            System.out.println(i);

        }

        Map<Integer, String> map=new LinkedHashMap<Integer,String>();

        map.put(3, "zhangsan");

        map.put(2,"wangyi");

        map.put(7,"wangwu");

        map.put(4, "zhangsansan");

        for (Integer key:map.keySet()) {

            String valueString=map.get(key);

            System.out.println(key+"::"+valueString);

        }

        for(Map.Entry<Integer, String> me:map.entrySet())

        {

            Integer keyInteger=me.getKey();

            String valString=me.getValue();

            System.out.println(keyInteger+":"+valString);

        }

    }

}

Выходной результат:

abc1

abc2

abc3

2

3

3

4

3::zhangsan

2::wangyi

7::wangwu

4::zhangsansan

3:zhangsan

2:wangyi

7:wangwu

4:zhangsansan

 

 

package cn.itcast.p4.news.demo;

public class ParamterDemo {

    /**

     * @param args

     */

    public static void main(String[] args) {

             int sum = newAdd(5,1,4,7,3);

             System.out.println("sum="+sum);

             int sum1 = newAdd(5,1,2,7,3,9,8,7,6);

             System.out.println("sum1="+sum1);

    }

    /*

* Переменные аргументы функций.

* на самом деле является массивом, но он получает элементы массива.

* автоматически оборачивает эти элементы в массив. Упрощает запись вызывающего абонента.

* Примечание. Типы переменных параметров должны быть определены в конце списка параметров.

     */

    public static int newAdd(int a,int...  arr){

             int sum = 0;

             for (int i = 0; i < arr.length; i++) {

                      sum+=arr[i];

             }

             return sum;

    }

 

package cn.itcast.p4.news.demo;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import static java.util.Collections.*;//Статический импорт, собственно, статических членов класса.

import static java.lang.System.*;

public class StaticImportDemo {

    /**

     * @param args

     */

    public static void main(String[] args) {

             List<String> list = new ArrayList<String>();

             list.add("abc3");

             list.add("abc7");

             list.add("abc1");

             out.println(list);

sort(list);//После статического импорта вам не нужно писать Коллекции

             System.out.println(list);

             String max = max(list);

             System.out.println("max="+max);

    }

}

Выходной результат:

[abc1, abc3, abc7]

max=abc7

 

package aaa;

import java.util.Properties;

import java.util.Set;

public class SystemDemo {

         private static final String LINE_SEPARATOR = System

                          .getProperty("line.separator");// Получить символ новой строки, разные системы, символ новой строки отличается. Его нужно получить по атрибуту, иначе может возникнуть несовместимость

         public static void main(String[] args) {

                  // TODO Auto-generated method stub

                  demo_1();

                  demo_2();

         }

         private static void demo_2() {

                  /*

* Система: методы и свойства в классе являются статическими.

* Общие методы: long currentTimeMillis(); Получить значение текущего времени в миллисекундах.

                   */

                  long l2 = System.currentTimeMillis();

                  System.out.println(l2);// Результатом вывода является миллисекундное значение текущего времени

System.out.println("привет-"+LINE_SEPARATOR+" мир");//новая строка

         }

         /**

* Получить все свойства

          */

         private static void demo_1() {

// Получить информацию о свойствах системы и сохранить ее в коллекции свойств.

                  /*

Ключи и значения типа String хранятся в коллекции свойств. Для манипулирования элементами лучше всего использовать собственные методы хранения и выборки.

                   */

                  Properties properties = System.getProperties();

                  Set<String> namSet = properties.stringPropertyNames();

                  for (String string : namSet) {

                          String valueString = properties.getProperty(string);

                          System.out.println(string + "::" + valueString);

                  }

         }

}

 

 

 

В Java класс Runtime представляет класс операций времени выполнения, который представляет собой класс, инкапсулирующий процесс JVM.Каждая JVM соответствует экземпляру класса Runtime, экземпляр которого создается средой выполнения JVM. Поэтому в документации JDK читатели не найдут определения конструктора в классе Runtime, потому что конструктор самого класса Runtime является приватным (дизайн синглтона).Если вы хотите получить экземпляр Runtime, есть только следующие методы:

Время выполнения = Runtime.getRuntime();

То есть в классе Runtime предоставляется статический метод getRuntime(), который может получить экземпляр класса Runtime, а затем через Runtime можно получить некоторую системную информацию. Например, getRuntime() для получения экземпляра среды выполнения; freeMemory() для возврата объема свободной памяти в виртуальной машине Java; maxMemory() для возврата максимального объема памяти JVM; gc() для запуска мусора коллектор для освобождения места; exec(команда) для выполнения этой машинной команды.

package aaa;

import java.io.IOException;

public class RuntimeDemo {

         public static void main(String[] args) throws IOException,

                          InterruptedException {

                  // TODO Auto-generated method stub

                  Runtime runtime = Runtime.getRuntime();

                  Process p = runtime.exec("notepad.exe");

                  Thread.sleep(5000);

p.destroy();//Уничтожить процесс

runtime.gc();// сборка мусора

Runtime.exec("notepad.exe c:\\RuntimeDemo.java");//Открываем файл RuntimeDemo с помощью notepad.exe

         }

}

 

package aaa;

import java.util.Random;

public class MathDemo {

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       /*

* Математика: Предоставляет методы для манипулирования математическими операциями. все статичны.

* Часто используемые методы:

* ceil(): возвращает наименьшее целое число, большее аргумента.

* floor(): возвращает наибольшее целое число, меньшее аргумента.

* round(): возвращает округленное целое число.

* pow(a,b): возведение a в степень b.

        */

       double d1 = Math.ceil(12.56);

       double d2 = Math.floor(12.56);

       double d3 = Math.round(12.46);

       sop("d1="+d1);

       sop("d2="+d2);

       sop("d3="+d3);

       double d = Math.pow(10, 2);

        sop("d="+d);

//Первый тип выводит случайные числа от 1 до 10

        for (int i = 0; i < 10; i++) {

           double d4=(int)(Math.random()*10+1);

           System.out.println(d4);

       }

//Второе выходное случайное число от 1 до 10

        Random random=new Random();              

        for (int i = 0; i < 10; i++) {

       double d5=(int)(random.nextDouble()*10+1);

       System.out.println(d5);

       int d6=random.nextInt(10)+1;

       System.out.println(d6);

       }

    }

    public static void sop(String string) {

       System.out.println(string);

    }

}

 

package aaa;

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateDemo {

         public static void main(String[] args) throws ParseException {

                  // TODO Auto-generated method stub

                  demo_1();

                  demo_2();

                  demo_3();

         }

         /**

* * Строка в формате даты --> Объект даты.

Используется метод parse() класса DateFormat.

          * @throws ParseException

          */

         private static void demo_3() throws ParseException {

                  // TODO Auto-generated method stub

Строка str_Date = "12 апреля 2015 г.";

                  DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);

                  Date date = dateFormat.parse(str_Date);

                  System.out.println(date);

// Преобразование пользовательского формата в объект даты

                  str_Date="2015---08--12";

                  dateFormat=new SimpleDateFormat("yyyy---MM--dd");

                  date=dateFormat.parse(str_Date);

                  System.out.println(date);

         }

         /**

* Отформатируйте объект даты. Преобразование объекта даты --> строка формата даты. Используется метод формата в классе DateFormat.

          */

         private static void demo_2() {

                  // TODO Auto-generated method stub

                  Date date = new Date();

                  DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG); // формат даты

                  System.out.println(dateFormat.format(date));

                  dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,

                                   DateFormat.LONG); // формат даты и времени

                  System.out.println(dateFormat.format(date));

// собственный стиль

                  dateFormat = new SimpleDateFormat("yyyy--MM--dd");

                  String stringDate = dateFormat.format(date);

                  System.out.println(stringDate);

         }

         /**

* Преобразование между объектами даты и значениями миллисекунд.

          *

* Значение миллисекунды --> Объект Date: 1, через конструктор объекта Date new Date(timeMillis); 2, его также можно установить через setTime.

* Потому что вы можете работать с каждым полем (год, месяц, день и т. д.) даты с помощью методов объекта Date. Объект даты -> значение миллисекунды: 2, метод getTime.

* Потому что вы можете выполнять операции над конкретными числовыми значениями.

          */

         private static void demo_1() {

                  Date date = newDate();// Инкапсулируем текущую дату и время в объект Date.

                  System.out.println(date);// Sun Apr 29 11:48:02 CST 2012

                  long time = System.currentTimeMillis();

                  Date date1 = new Date(time);

                  System.out.println(date1);

         }

}

Упражнение: Сколько дней между «2012-3-17» и «2012-4-6»?

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

/*

* Идея: Просто вычтите две даты.

* Как его уменьшить? Должно быть два числа, которые можно вычесть.

* Вычитание энергии может быть миллисекундным значением. Как получить значение миллисекунды? через объект даты.

* Как получить объект даты? Вы можете преобразовать строки в объекты даты.

* 1, преобразовать строку в формате даты в объект Date. 2. Преобразуйте объект Date в миллисекундное значение. 3. Вычитание, затем становится количеством дней

*/

public class DateTest {

         public static void main(String[] args) throws ParseException {

                  String str_date1 = "2012-3-17";

                  String str_date2 = "2012-4-18";

                  test(str_date1,str_date2);

         }

         public static void test(String str_date1,String str_date2) throws ParseException {

DateFormat dateFormat = DateFormat.getDateInstance();//Определяем объект формата даты.

                  dateFormat = new SimpleDateFormat("yyyy-MM-dd");

Date date1 = dateFormat.parse(str_date1);//1, преобразовать строку даты в объект даты.

                  Date date2 = dateFormat.parse(str_date2);

                  long time1 = date1.getTime();

                  long time2 = date2.getTime();

                  long time = Math.abs(time1-time2);

                  int day = getDay(time);

                  System.out.println(day);

         }

         private static int getDay(long time) {

                  int day = (int)(time/1000/60/60/24);

                  return day;

         }

}

 

Начиная с JDK 1.1, при работе с датой и временем система рекомендует использовать для реализации класс Calendar. В дизайне функция класса Calendar намного мощнее, чем у класса Date, и его реализация также сложнее, чем у класса Date.Ниже мы познакомим вас с использованием класса Calendar.

Класс Calendar — это абстрактный класс, который реализует объекты определенных подклассов в реальном использовании.Процесс создания объектов прозрачен для программиста, и его нужно создавать только с помощью метода getInstance.

1. Используйте класс Calendar для представления текущего времени

                   Calendar c = Calendar.getInstance();

Поскольку класс Calendar является абстрактным классом, а конструктор класса Calendar защищен, конструктор класса Calendar нельзя использовать для создания объектов.API предоставляет метод getInstance для создания объектов.

Объект Calendar, полученный с помощью этого метода, представляет текущее системное время.Поскольку реализация класса Calendar toString не так интуитивно понятна, как класс Date, нет смысла напрямую выводить объект класса Calendar.

2. Используйте класс Calendar для представления указанного времени

                   Calendar c1 = Calendar.getInstance();

                   c1.set(2009, 3 - 1, 9);

Чтобы использовать класс Calendar для представления определенного времени, необходимо сначала создать объект Calendar, а затем установить параметры года, месяца и дня в объекте для завершения.

Объявление метода set:

         public final void set(int year,int month,int date)

Время, установленное в приведенном выше примере кода, — 9 марта 2009 г., и структура его параметров отличается от структуры класса Date. Значение года в классе Calendar записывается напрямую, значение месяца — фактическое значение месяца минус 1, а значение даты — фактическое значение даты.

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

         public void set(int field,int value)

В этом методе поле параметра представляет собой тип устанавливаемого поля. Распространенными типами являются следующие:

Calendar.YEAR - год

Календарь.МЕСЯЦ - месяц

Календарь.ДАТА - дата

Calendar.DAY_OF_MONTH - дата, точно такая же, как поле выше

Calendar.HOUR - часы в 12-часовом формате

Calendar.HOUR_OF_DAY — часы в 24-часовом формате

Календарь.МИНУТА – минуты

Календарь.SECOND – секунды

Calendar.DAY_OF_WEEK - день недели

Последующее значение параметра представляет установленное значение. Например:

         c1.set(Calendar.DATE,10);

Функция этого кода состоит в том, чтобы установить дату во времени, представленном объектом c1, на 10-е, а все остальные значения будут пересчитаны, например, день недели и соответствующее относительное значение времени.

3. Получите информацию в классе Calendar

                   Calendar c2 = Calendar.getInstance();

int year = c2.get(Calendar.YEAR);//год

int месяц = ​​c2.get(Календарь.МЕСЯЦ) + 1;//месяц

int date = c2.get(Календарь.ДАТА);//дата

int час = c2.get(Calendar.HOUR_OF_DAY);//час

int minute = c2.get(Calendar.MINUTE);//минута

int second = c2.get(Calendar.SECOND);//секунда

int day = c2.get(Calendar.DAY_OF_WEEK);//день недели

System.out.println("Год:" + год);

System.out.println("месяц:" + месяц);

System.out.println("дата:" + дата);

System.out.println("час:" + час);

System.out.println("минута:" + минута);

System.out.println("секунды:" + секунда);

System.out.println("Неделя:" + день);

Используйте метод get в классе Calendar для получения соответствующей информации в объекте Calendar.Объявление метода get выглядит следующим образом: public int get(int field)

Поле параметра представляет собой значение поля, которое необходимо получить, и описание поля согласуется с описанным выше методом установки. Следует отметить, что полученный месяц представляет собой фактическое значение месяца минус 1, а полученное значение недели отличается от класса Date. В классе «Календарь» воскресенье — это 1, понедельник — 2, вторник — 3 и так далее.

4. Описание других методов

На самом деле, класс Calendar также предоставляет множество других полезных методов.Нижеследующее кратко описывает использование нескольких распространенных методов.

а, метод добавления: public abstract void add (поле int, сумма int)

Функция этого метода заключается в увеличении или уменьшении определенного значения поля в объекте календаря.Увеличение — это положительное значение суммы, а уменьшение — отрицательное значение суммы.

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

                   Calendar c3 = Calendar.getInstance();

                   c3.add(Calendar.DATE, 100);

                   int year1 = c3.get(Calendar.YEAR);

int month1 = c3.get(Календарь.МЕСЯЦ) + 1;//месяц

int date1 = c3.get(Календарь.ДАТА);//дата

System.out.println(год1 + "год" + месяц1 + "месяц" + дата1 + "день");

Метод добавления здесь относится к добавлению 100 к Calendar.DATE объекта c3, то есть поля даты.Класс будет пересчитывать значения других полей в объекте даты, чтобы получить дату через 100 дней.Например , вывод программы может быть For: 17 июня 2009 г.

Б. Метод After: общедоступное логическое значение after(Object when)

Функция этого метода состоит в том, чтобы определить, находится ли текущий объект даты за объектом когда, если он находится за объектом когда, он возвращает true, в противном случае он возвращает false. Например:

                   Calendar c4 = Calendar.getInstance();

                   c4.set(2009, 10 - 1, 10);

                   Calendar c5 = Calendar.getInstance();

                   c5.set(2010, 10 - 1, 10);

                   boolean b = c5.after(c4);

                   System.out.println(b);

В этом примере кода время, представленное объектом c4, — 10 октября 2009 г., а время, представленное объектом c5, — 10 октября 2010 г., поэтому дата, представленная объектом c5, находится после даты, представленной c4, поэтому возвращаемое значение метод after верен. Другой аналогичный метод — before, который определяет, находится ли текущий объект даты перед другим объектом даты.

c, метод getTime: общедоступная окончательная дата getTime()

Функция этого метода заключается в преобразовании объекта типа Calendar в соответствующий объект класса Date, оба из которых представляют один и тот же момент времени.

Аналогичный метод setTime.Функция этого метода заключается в преобразовании объекта Date в соответствующий объект Calendar.Объявление этого метода выглядит следующим образом: public final void setTime(Date date)

Пример кода для преобразования выглядит следующим образом:

                  Date d = new Date();

                   Calendar c6 = Calendar.getInstance();

Date d1 = c6.getTime();//Объект типа Calendar преобразуется в объект Date

                     Calendar c7 = Calendar.getInstance();

c7.setTime(d);//Объект типа Date преобразуется в объект Calendar

5. Обмен между объектом календаря и относительным временем

                            Calendar c8 = Calendar.getInstance();

                            long t = 1252785271098L;

long t1 = c8.getTimeInMillis();//Преобразуем объект календаря в относительное время

                             Calendar c9 = Calendar.getInstance();

c9.setTimeInMillis(t1);//Преобразуем относительное время в объект календаря

При преобразовании объект Calendar можно преобразовать в относительное время с помощью метода getTimeInMillis в классе Calendar. При преобразовании относительного времени в объект Calendar сначала создайте объект Calendar, а затем используйте метод setTimeInMillis класса Calendar, чтобы установить время.

Пример приложения

Основное использование обработки времени и даты описано ниже с двумя простыми примерами.

1. Рассчитайте разницу в днях между двумя датами

Например, чтобы вычислить разницу в днях между 1 апреля 2010 г. и 11 марта 2009 г., можно использовать обработку времени и даты.

Принцип реализации программы: сначала представить две определенные точки времени, где объект календаря используется для представления, а затем преобразовать две точки времени в соответствующее относительное время, найти разницу между относительным временем двух точек времени. , а затем разделить Соответствующее количество дней можно получить на количество миллисекунд в сутках (24 часа X 60 минут X 60 секунд X 1000 миллисекунд). Полный код для реализации примера выглядит следующим образом:

         import java.util.*;

/**

* Рассчитать количество дней между двумя датами

 */

public class DateExample1 {

         public static void main(String[] args) {

//Установить две даты

                       Calendar c1 = Calendar.getInstance();

c1.set(2009, 3 - 1, 11);//Дата: 11 марта 2009 г.

                      Calendar c2 = Calendar.getInstance();

c2.set(2010, 4 - 1, 1);//Дата: 1 апреля 2010 г.

// Преобразование в относительное время

                   long t1 = c1.getTimeInMillis();

                   long t2 = c2.getTimeInMillis();

длинные дни = (t2 - t1)/(24 * 60 * 60 * 1000);//рассчитываем количество дней

                   System.out.println(days);

         }

}

2. Вывести календарь текущего месяца

Функция этого примера заключается в выводе календаря месяца текущего системного времени.Например, если текущее системное время 10 марта 2009 г., выводится календарь за март 2009 г.

Принцип реализации программы таков: сначала получить день недели 1-го числа месяца, затем получить количество дней в месяце и, наконец, использовать управление процессом для реализации вывода в соответствии с форматом календаря. То есть, если № 1 — это понедельник, выведите одну единицу пространства, если № 1 — вторник, выведите две единицы пространства и так далее. После печати даты субботы заверните строку. Полный код для реализации примера выглядит следующим образом:

public class DateExample2{

         public static void main(String[] args){

//Получить текущее время

                   Calendar c = Calendar.getInstance();

c.set(Calendar.DATE,1);//Установите репрезентативную дату на № 1

int start = c.get(Calendar.DAY_OF_WEEK);//Получить 1-й день недели

int maxDay = c.getActualMaximum(Calendar.DATE);//Получить максимальное количество дней в текущем месяце

//заголовок вывода

System.out.println("Воскресенье понедельник вторник среда четверг пятница суббота");

//Пробел в начале вывода

                   for(int i = 1;i < start;i++){

                            System.out.print("      "); 

                   }

//Вывод всех дат в месяце

                   for(int i = 1;i <= maxDay;i++){

System.out.print(" " + i);//Вывод чисел даты

System.out.print(" ""); //Вывод разделенных пробелами

                            if(i < 10){System.out.print(' ');}

// Решаем, следует ли обернуть

                            if((start + i - 1) % 7 == 0){  System.out.println();   }

                   }

System.out.println();//новая строка

         }       

}

package cn.itcast.p1.otherapi;

import java.util.Calendar;

public class CalendarDemo {

         public static void main(String[] args) {

                  Calendar c = Calendar.getInstance();

                  int year = 2012;

                  showDays(year);

         }

//Чтобы найти количество дней в феврале, идея: вычесть единицу из первого дня марта, чтобы получить количество дней в последний день февраля

         public static void showDays(int year) {

                  Calendar c = Calendar.getInstance();

                  c.set(year, 2, 1);

                  c.add(Calendar.DAY_OF_MONTH, -1);

                  showDate(c);

         }

//Получить свойство времени объекта Calendar

         public static void showDate(Calendar c) {

                  int year = c.get(Calendar.YEAR);

                  int month = c.get(Calendar.MONTH)+1;

                  int day = c.get(Calendar.DAY_OF_MONTH);

                  int week = c.get(Calendar.DAY_OF_WEEK);

System.out.println(год+"год"+месяц+"месяц"+день+"день"+getWeek(неделя));

         }

         public static String getWeek(int i) {

String[] week = {"","Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"};

                  return weeks[i];

         }

}