Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Сортировка массива

Читайте также:
  1. Алгоритм 2. Пузырьковая сортировка
  2. Алгоритм 5. Сортировка двоичной кучей
  3. Алгоритм 6. Быстрая сортировка
  4. Алгоритм 7. Сортировка подсчетом
  5. Возвращение массива
  6. Инициализация массива
  7. Интерьерная мозаика «Хамелеон» из массива разных пород дерева.
  8. Создание массива
  9. Сортировка
  10. Сортировка данных

С помощью встроенного метода сортировки вы можете сортировать любой массив примитивных типов и любой массив объектов, который реализует Comparable или имеет ассоциированный Comparator. Таким образом, заполняется большая дыра в библиотеке Java — верите или нет, но в Java 1.0 или 1.1 не было поддержки для сортировки String! Вот пример, который генерирует случайным образом объекты String и сортирует их:

//: c09:StringSorting.java// Сортировка массива Strings.import com.bruceeckel.util.*;import java.util.*; public class StringSorting { public static void main(String[] args) { String[] sa = new String[30]; Arrays2.fill(sa, new Arrays2.RandStringGenerator(5)); Arrays2.print("Before sorting: ", sa); Arrays.sort(sa); Arrays2.print("After sorting: ", sa); }} ///:~

Одно вы должны заметить об алгоритме сортировки при выводе String - это лексикография, которая помещает все слова, начинающиеся с большой буквы, вперед, а далее следуют все слова, начинающиеся с маленьких букв. (Телефонные книги обычно упорядочены таким образом.) Вы можете также сгруппировать слова вместе, не зависимо от регистра, и вы можете сделать это, определив класс Comparator и, таким образом, перегрузив поведение по умолчанию для String Comparable. Для повторного использования это будет добавлено в пакет “util”:

//: com:bruceeckel:util:AlphabeticComparator.java// Собираем вместе большие и маленькие буквы.package com.bruceeckel.util;import java.util.*; public class AlphabeticComparator implements Comparator{ public int compare(Object o1, Object o2) { String s1 = (String)o1; String s2 = (String)o2; return s1.toLowerCase().compareTo(s2.toLowerCase()); }} ///:~

Каждый String преобразуется в нижний регистр перед сравнением. Встроенный метод compareTo() для String обеспечивает желаемую функциональность.

Вот тест использования AlphabeticComparator:

//: c09:AlphabeticSorting.java//Собираем вместе большие и маленькие буквы.import com.bruceeckel.util.*;import java.util.*; public class AlphabeticSorting { public static void main(String[] args) { String[] sa = new String[30]; Arrays2.fill(sa, new Arrays2.RandStringGenerator(5)); Arrays2.print("Before sorting: ", sa); Arrays.sort(sa, new AlphabeticComparator()); Arrays2.print("After sorting: ", sa); }} ///:~

Алгоритм сортировки, который используется в стандартной библиотеке Java, оптимально предназначен для определенного типа, сортируемого вами — быстрая сортировка для примитивных типов соизмерима по скорости с сортировкой для объектов. Так что вам нет необходимости тратить какое-то время на заботу о производительности, пока ваш инструмент профилирования не укажет на процесс сортировки, как на узкое место.




Дата добавления: 2015-09-11; просмотров: 75 | Поможем написать вашу работу | Нарушение авторских прав

Связь с внешним классом | Static внутренние классы | Зачем внутренние классы? | Замыкания & обратные вызовы | Внутренние классы и структуры управления | Упражнения | Массивы | Массивы - первоклассные объекты | Возвращение массива | Класс Arrays |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав