JavaRush /Java блог /Random /Кофе-брейк #115. Простой способ группировать объекты в Ja...

Кофе-брейк #115. Простой способ группировать объекты в Java. Метод charAt() — как его применять в Java

Статья из группы Random

Простой способ группировать объекты в Java

Источник: Dev.to В этом примере мы научимся упрощать группировку для объектов Map, которые содержат коллекции в качестве значений. Кофе-брейк #115. Простой способ группировать объекты в Java. Метод charAt() — как его применять в Java  - 1Например, у нас есть у нас есть объект Map, в котором ключ — это Integer, а значения — массив строк:

Grouper<Integer, String> grouper = new ArrayListGrouper<>();
        grouper.put(1, "a");
        grouper.put(1, "b");
        grouper.put(1, "c");
        grouper.put(1, "c");
        grouper.put(2, "c");
Результат:
{1=[a, b, c, c], 2=[c]}
Все, что нам нужно сделать, — это определить стратегию группировки. Например, уже определенный класс ArrayListGrouper использует в качестве своей стратегии ArrayList. Мы всегда можем определить новый Grouper, который будет использовать другой GroupingStrateg. Теперь давайте изменим ArrayList на HashSet, чтобы элементы стали уникальными:

public class HashSetGrouper<K, V> extends Grouper<K, V> {

    public HashSetGrouper() {
        super(HashSet::new);
    }
}
Затем тестируем:

@Test
    public void testHashSetGrouper() {
        Grouper<Integer, String> grouper = new HashSetGrouper<>();
        grouper.put(1, "a");
        grouper.put(1, "b");
        grouper.put(1, "c");
        grouper.put(1, "c");
        grouper.put(2, "c");
        System.out.println(grouper);

    }
Результат:
{1=[a, b, c], 2=[c]}
Ключ 1 теперь имеет набор, в котором значение c не повторяется. Код примера размещен на Github.

Метод charAt() — как его применять в Java

Источник: FreeCodeCamp Метод charAt() в Java возвращает значение символа char в строке по заданному или указанному индексу. Сегодня мы увидим, как использовать метод charAt(), начиная с его синтаксиса, а затем рассмотрим несколько примеров и вариантов использования.

Как использовать метод Java charAt()

Вот как выглядит синтаксис метода charAt():

public char charAt(int index)
Обратите внимание, что символы, возвращаемые из строки с помощью метода charAt(), имеют тип данных char. Чуть позже мы узнаем, как это влияет на конкатенацию возвращаемых значений. А теперь давайте посмотрим на примеры:

public class Main {
  public static void main(String[] args) {
  
    String greetings = "Hello World";
    
    System.out.println(greetings.charAt(0));
    // H
  }
}
В приведенном выше коде наша строка, хранящаяся в переменной с именем greetings, говорит “Hello World”. Мы использовали метод charAt(), чтобы получить символ с индексом 0. Этим символом является буква H. Первый символ всегда будет иметь индекс 0, второй — индекс 1 и так далее. Пространство между подстроками также считается индексом. В следующем примере мы увидим, что происходит, когда мы пытаемся соединить разные возвращенные символы. Конкатенация означает соединение двух или более значений вместе (в большинстве случаев этот термин используется для соединения символов или подстрок в строке).

public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";
    
    char ch1 = greetings.charAt(0); // H
    char ch2 = greetings.charAt(4); // o
    char ch3 = greetings.charAt(9); // l
    char ch4 = greetings.charAt(10); // d
    
    System.out.println(ch1 + ch2 + ch3 + ch4);
    // 391
  }
}
Используя метод charAt(), мы получили символы с индексами 0, 4, 9 и 10, которые являются буквами H, o, l и d соответственно. Затем мы попытались напечатать и соединить эти символы:

System.out.println(ch1 + ch2 + ch3 + ch4);
Но вместо того, чтобы вернуть нам “Hold”, мы получили 391. Это произошло из-за того, что возвращаемые значения больше не являются строками, а имеют тип данных char. Поэтому, когда мы их объединяем, интерпретатор вместо этого добавляет их ASCII значение. H имеет значение ASCII 72, o имеет значение 111, l имеет значение 108, а d имеет значение 100. Если мы сложим их вместе, то получим 391, которое было возвращено в последнем примере.

Ошибка StringIndexOutOfBoundsException

Когда мы передаем порядковый номер, который превышает количество символов в нашей строке, мы получаем в консоли ошибку StringIndexOutOfBoundsException. Эта ошибка также относится к использованию отрицательной индексации, которая не поддерживается в Java. В таких языках программирования, как Python, которые поддерживают отрицательное индексирование, передача -1 даст вам последний символ или значение в наборе данных, аналогично тому, как 0 всегда возвращает первый символ. Вот пример:

public class Main {
  public static void main(String[] args) {
    String greetings = "Hello World";
    
    char ch1 = greetings.charAt(20); 
    
    System.out.println(ch1);
    
    /* Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 20 
    */
  }
}
В приведенном выше коде мы передали индекс 20: char ch1 = greetings.charAt(20);, что превышает количество символов в нашей переменной greetings, поэтому получили ошибку. Вы можете увидеть сообщение об ошибке, закомментированное в блоке кода выше. Точно так же, если мы передадим отрицательное значение, подобное этому: char ch1 = greetings.charAt(-1);, то получим аналогичную ошибку.

Заключение

В этой статье мы узнали, как использовать метод charAt() в Java. Мы увидели, как возвращать символы в строке на основе их порядкового номера и что происходит, когда мы объединяем эти символы. Также мы говорили о некоторых случаях, когда можно получить ответ об ошибке при использовании метода charAt() в Java.
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ