JavaRush /Blog Java /Random-VI /Nghỉ giải lao #115. Một cách đơn giản để nhóm các đối tượ...

Nghỉ giải lao #115. Một cách đơn giản để nhóm các đối tượng trong Java. Phương thức charAt() - cách sử dụng nó trong Java

Xuất bản trong nhóm

Một cách dễ dàng để nhóm các đối tượng trong Java

Nguồn: Dev.to Trong ví dụ này, chúng ta sẽ tìm hiểu cách đơn giản hóa việc nhóm các đối tượng Bản đồ có chứa các bộ sưu tập làm giá trị. Nghỉ giải lao #115.  Một cách đơn giản để nhóm các đối tượng trong Java.  Phương thức charAt() - cách sử dụng trong Java - 1Ví dụ: chúng ta có một đối tượng Map trong đó khóa là Số nguyên và các giá trị là một mảng các chuỗi:
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");
Kết quả:
{1=[a, b, c, c], 2=[c]}
Tất cả những gì chúng ta cần làm là xác định chiến lược nhóm. Ví dụ: lớp ArrayListGrouper đã được xác định trước sử dụng ArrayList làm chiến lược của nó . Chúng ta luôn có thể xác định một Grouper mới sẽ sử dụng GroupingStrateg khác . Bây giờ, hãy thay đổi ArrayList thành HashSet để làm cho các phần tử trở nên độc đáo:
public class HashSetGrouper<K, V> extends Grouper<K, V> {

    public HashSetGrouper() {
        super(HashSet::new);
    }
}
Sau đó chúng tôi kiểm tra:
@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);

    }
Kết quả:
{1=[a, b, c], 2=[c]}
Khóa 1 bây giờ có một tập hợp trong đó giá trị c không được lặp lại. Mã ví dụ được đăng trên Github .

Phương thức charAt() - cách sử dụng nó trong Java

Nguồn: FreeCodeCamp Phương thức charAt() trong Java trả về giá trị của ký tự char trong một chuỗi tại một chỉ mục nhất định hoặc được chỉ định. Hôm nay chúng ta sẽ xem cách sử dụng phương thức charAt() , bắt đầu bằng cú pháp của nó, sau đó xem xét một số ví dụ và trường hợp sử dụng.

Cách sử dụng phương thức Java charAt()

Cú pháp của phương thức charAt() trông như sau :
public char charAt(int index)
Lưu ý rằng các ký tự được trả về từ một chuỗi sử dụng phương thức charAt() đều thuộc kiểu dữ liệu char . Chúng ta sẽ xem điều này ảnh hưởng như thế nào đến việc ghép các giá trị trả về sau đây. Bây giờ hãy xem các ví dụ:
public class Main {
  public static void main(String[] args) {

    String greetings = "Hello World";

    System.out.println(greetings.charAt(0));
    // H
  }
}
Trong đoạn mã trên, chuỗi của chúng ta, được lưu trữ trong một biến có tên là lời chào , có nội dung là “Xin chào thế giới”. Chúng ta đã sử dụng phương thức charAt() để lấy ký tự ở chỉ mục 0. Ký tự đó là chữ H. Ký tự đầu tiên sẽ luôn ở chỉ mục 0, ký tự thứ hai ở chỉ mục 1, v.v. Khoảng cách giữa các chuỗi con cũng được coi là một chỉ mục. Trong ví dụ sau, chúng ta sẽ thấy điều gì xảy ra khi chúng ta cố gắng kết nối các ký tự được trả về khác nhau. Ghép nối có nghĩa là nối hai hoặc nhiều giá trị lại với nhau (trong hầu hết các trường hợp, thuật ngữ này được sử dụng để kết nối các ký tự hoặc chuỗi con trong một chuỗi).
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
  }
}
Sử dụng phương thức charAt() , chúng ta nhận được các ký tự có chỉ mục 0, 4, 9 và 10, lần lượt là các chữ cái H, o, l và d. Sau đó chúng tôi đã cố gắng in và kết nối các ký tự này:
System.out.println(ch1 + ch2 + ch3 + ch4);
Nhưng thay vì trả về “Giữ”, chúng tôi nhận được 391. Điều này là do các giá trị được trả về không còn là chuỗi nữa mà thuộc loại char . Vì vậy, khi chúng ta nối chúng, trình thông dịch sẽ thêm giá trị ASCII của chúng. H có giá trị ASCII là 72, o có giá trị 111, l có giá trị 108 và d có giá trị 100. Nếu cộng chúng lại với nhau, chúng ta sẽ có 391, kết quả được trả về trong ví dụ trước.

Lỗi StringIndexOutOfBoundsException

Khi chúng tôi chuyển số thứ tự lớn hơn số ký tự trong chuỗi của mình, chúng tôi sẽ gặp lỗi StringIndexOutOfBoundsException trong bảng điều khiển. Lỗi này cũng áp dụng cho việc sử dụng lập chỉ mục phủ định, điều này không được hỗ trợ trong Java. Trong các ngôn ngữ lập trình như Python hỗ trợ lập chỉ mục phủ định, việc chuyển -1 sẽ cung cấp cho bạn ký tự hoặc giá trị cuối cùng trong tập dữ liệu, tương tự như cách 0 luôn trả về ký tự đầu tiên. Đây là một ví dụ:
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
    */
  }
}
Trong đoạn mã trên, chúng ta đã chuyển chỉ số 20: char ch1 = Greetings.charAt(20); , vượt quá số lượng ký tự trong biến lời chào của chúng tôi , vì vậy chúng tôi đã gặp lỗi. Bạn có thể thấy thông báo lỗi được nhận xét trong khối mã ở trên. Tương tự, nếu chúng ta chuyển một giá trị âm như thế này: char ch1 = Greetings.charAt(-1); , thì chúng tôi gặp lỗi tương tự.

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu cách sử dụng phương thức charAt() trong Java. Chúng ta đã biết cách trả về các ký tự trong một chuỗi dựa trên số chỉ mục của chúng và điều gì sẽ xảy ra khi chúng ta nối các ký tự đó. Chúng ta cũng đã nói về một số trường hợp bạn có thể nhận được phản hồi lỗi khi sử dụng phương thức charAt() trong Java.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION