JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #115. วิธีง่ายๆ ในการจัดกลุ่มวัตถุใน Java วิธี...

คอฟฟี่เบรค #115. วิธีง่ายๆ ในการจัดกลุ่มวัตถุใน Java วิธีการ charAt() - วิธีการใช้งานใน Java

เผยแพร่ในกลุ่ม

วิธีง่ายๆ ในการจัดกลุ่มวัตถุใน Java

ที่มา: Dev.to ในตัวอย่างนี้ เราจะเรียนรู้วิธีลดความซับซ้อนของการจัดกลุ่มสำหรับ ออบเจ็กต์ แผนที่ที่มีคอลเลกชันเป็นค่า คอฟฟี่เบรค #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=[ก, ข, ค, ค], 2=[ค]}
สิ่งที่เราต้องทำคือกำหนดกลยุทธ์การจัดกลุ่ม ตัวอย่างเช่น คลาส 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=[ก, ข, ค], 2=[ค]}
ตอนนี้ คีย์1มีชุดที่ไม่ซ้ำค่าc โค้ดตัวอย่างถูกโพสต์บน Github

วิธีการ charAt() - วิธีการใช้งานใน Java

ที่มา: FreeCodeCamp วิธีการcharAt()ใน Java ส่งกลับค่าของ อักขระ ถ่านในสตริงที่ดัชนีที่กำหนดหรือระบุ วันนี้เราจะมาดูวิธีการใช้เมธอด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); ซึ่งเกินจำนวนอักขระใน ตัวแปร คำทักทาย ของเรา ดังนั้นเราจึงได้รับข้อผิดพลาด คุณสามารถดูข้อความแสดงข้อผิดพลาดที่ใส่ความคิดเห็นไว้ในบล็อคโค้ดด้านบน ในทำนองเดียวกัน ถ้าเราส่งผ่านค่าลบเช่นนี้: char ch1 = Greetings.charAt(-1); จากนั้นเราได้รับข้อผิดพลาดที่คล้ายกัน

บทสรุป

ในบทความนี้ เราได้เรียนรู้วิธีการใช้เมธอดcharAt()ใน Java เราเห็นวิธีการส่งคืนอักขระในสตริงตามหมายเลขดัชนี และจะเกิดอะไรขึ้นเมื่อเราต่ออักขระเหล่านั้นเข้าด้วยกัน เรายังพูดถึงบางกรณีที่คุณอาจได้รับการตอบกลับข้อผิดพลาดเมื่อใช้ เมธอด charAt()ใน Java
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION