Tag: collections

34 รายการ

Blog

นากกายเลื่อนลูกปัดสีเดียวกันจากถาดข้อมูลไปยังรางนับเพื่อหาของซ้ำ
javacollectionsfrequency

Java Collections.frequency: เช็กของซ้ำก่อนรับ batch

ใช้ Collections.frequency นับค่าที่เท่ากันตาม equals พร้อม Java assertions และข้อจำกัดเมื่อข้อมูลใหญ่หรือ equality ซับซ้อน

พี่โชว์
นากต้นฉบับคัดผลไม้ช้ำสีอำพันออกจากตะกร้าเขียวโดยไม่เทของทั้งตะกร้า
javacollectionsremoveif

Java removeIf: ล้างสมาชิกใน collection โดยไม่แก้ระหว่าง for-each

ใช้ Collection.removeIf ลบ record หมดอายุแบบ in-place อธิบาย mutability และ side effect พร้อม Java 17 assertions

พี่โชว์
งูต้นฉบับเทเมล็ดจากถาดหลายสีลงตาชั่งเดียว โดยมีถาดอำพันหนึ่งใบแสดงยอดที่ต้องหักคืน
pythoncollectionscounter

Python Counter.total: รวมจำนวนคงเหลือโดยยังเห็นค่าติดลบ

ใช้ collections.Counter.total คำนวณผลรวมสุทธิ อธิบายค่าศูนย์/ติดลบและการ normalize พร้อม unittest

พี่โชว์
นากต้นฉบับวางลูกบอลสิทธิ์สองถาดไม่ให้มีสีเดียวกันข้ามถาด
javacollectionspermissions

Java Collections.disjoint: ตรวจสิทธิ์สองชุดว่าไม่ทับกัน

ใช้ disjoint แสดง intent ของ overlap check พร้อม normalize input และ Java 17 assertions

พี่โชว์
นากกายต้นฉบับกำลังหมุนถาดช่องข้อมูลวงกลมบนโต๊ะทำงานสีมิ้นต์
javacollectionslist

Java Collections.rotate: หมุนลำดับโดยไม่สร้าง list ใหม่

เข้าใจ distance บวก/ลบ, modulo, mutable list และ edge cases ผ่าน Java 17 assertions

พี่โชว์
งูขดต้นฉบับกำลังถ่ายของจากสายพานคิวลงถาด snapshot ที่มีขอบจำกัดบนโต๊ะสว่าง
pythoncollectionsdeque

Python deque.copy: ถ่าย snapshot คิวโดยรักษา maxlen

ดู shallow-copy semantics, maxlen และการแยก mutation ของคิวด้วย unittest ที่รันจริงบน Python 3.14

พี่โชว์
นากกายต้นฉบับกำลังให้ลูกบาศก์ผ่านช่องตรวจรูปทรงก่อนลงตะกร้าบนโต๊ะสีมิ้นต์
javajava17collections

Java Collections.checkedList: กันชน type ตอนรับ List จาก legacy boundary

ใช้ checkedList ตรวจ element ตอนเขียนเข้าคอลเล็กชัน พร้อมทดสอบ raw alias และอธิบายว่ามันไม่แทน validation ของข้อมูลเดิม

พี่โชว์
งูต้นฉบับกำลังวางถาดใบเล็กซ้อนเหนือกล่องตั้งค่าหลายชั้นบนโต๊ะสีมิ้นต์
pythoncollectionschainmap

Python ChainMap.new_child: ซ้อน scope ใหม่โดยไม่ copy config ทั้งก้อน

ใช้ ChainMap.new_child สร้าง override ชั้นใหม่ พร้อมทดสอบ lookup, mutation และ parents เพื่อจัดการ config หลายระดับอย่างชัดเจน

พี่โชว์
ปูต้นฉบับตรวจกล่องหน้าสุดบนรางคิวก่อนคีบออก ขณะที่กล่องด้านหลังยังเรียงเดิม
rustvecdequequeue

Rust VecDeque::pop_front_if: หยิบหัวคิวเฉพาะเมื่อพร้อม

ใช้ pop_front_if ตรวจและนำสมาชิกหน้าคิวออกแบบ atomic ต่อการยืม พร้อมเข้าใจ mutation ใน predicate และทางเลือกเมื่อเงื่อนไขล้ม

พี่โชว์
นากกายกำลังแขวนกุญแจหน้าตาเหมือนกันสองดอกบนตะขอคนละอัน
javaidentityhashmapcollections

Java IdentityHashMap: เมื่อ key ต้องเป็น object เดิม ไม่ใช่ object ที่ equals กัน

ใช้ IdentityHashMap เฉพาะงาน topology และ graph traversal พร้อมทดสอบความต่างจาก HashMap และข้อห้ามใน business data

พี่โชว์
นากกายกำลังเลื่อนตัวชี้ข้ามแถวกระเบื้องไปยังหมุดที่ถูกยกขึ้นถัดไป
javabitsetcollections

Java BitSet.nextSetBit: เดินเฉพาะตำแหน่งที่เปิดโดยไม่สแกนทุกช่อง

ใช้ BitSet.nextSetBit วน sparse flags พร้อมหลีกเลี่ยง off-by-one และแยก index set จาก business identity

พี่โชว์
ปูต้นฉบับคีบลูกปัดที่ผ่านเงื่อนไขออกจากช่วงกลางของรางโดยเก็บลูกอื่นไว้
rustveciterator

Rust Vec::extract_if: ดึงสมาชิกออกเฉพาะช่วงโดยยังเก็บลำดับที่เหลือ

ใช้ Vec::extract_if แยกสมาชิกที่ผ่านเงื่อนไขจาก range พร้อมเข้าใจ lazy iterator, early drop และต้นทุนการเลื่อนข้อมูล

พี่โชว์
ปูสีส้มแดงต้นฉบับกำลังคลี่สายพานวงแหวนสองช่วงให้กลายเป็นแถวเดียวบนโต๊ะทำงานสีมิ้นต์
rustvecdequecollections

Rust VecDeque::make_contiguous: เปิด ring buffer เป็น slice ก่อน sort

ทำให้ข้อมูลใน VecDeque ต่อเนื่องในหน่วยความจำเพื่อ sort หรือส่งต่อ API ที่รับ slice พร้อมเข้าใจต้นทุนการย้าย

พี่โชว์
นากต้นฉบับเลือกแผ่นสถานะที่เรียงติดกันระหว่างหมุดสองจุดบนฉากสว่าง
javaenumsetcollections

Java EnumSet.range: สร้างช่วงสถานะแบบ type-safe และประหยัด

ใช้ EnumSet.range เมื่อ enum มีลำดับโดเมนชัด พร้อมระวังการผูก logic กับ ordinal

พี่โชว์
นากต้นฉบับวางของเป็นคู่ในช่องตู้หลายช่องที่ปิดฝาเรียบร้อย
javacollectionsimmutability

Java Map.ofEntries: สร้าง immutable map หลายคู่โดยไม่เปิดช่องให้แก้ทีหลัง

ใช้ Map.entry กับ Map.ofEntries สำหรับตารางคงที่ พร้อมข้อจำกัด null, duplicate key และ Java 17 assertions

น้องกาย
นากกายอัปเดตช่องแผนที่พร้อมกันบนโต๊ะมิ้นต์โดยไม่ชนกุญแจ
javaconcurrencycollections

Java ConcurrentHashMap.compute: อัปเดตค่าต่อคีย์แบบ atomic

ใช้ compute เพื่อนับเคาน์เตอร์โดยไม่แข่ง get+put พร้อมตัวอย่างรันจริง

น้องกาย
นากกายดันกล่องเข้าคิววงกลมบนโต๊ะมิ้นต์ กล่องเก่าหล่นออกด้านท้าย
pythoncollectionsdeque

Python deque(maxlen): คิววงกลมที่ตัดของเก่าให้อัตโนมัติ

ใช้ collections.deque แบบ maxlen เพื่อเก็บหน้าต่างล่าสุด N ชิ้น พร้อม unittest

น้องกาย
นากกายถ่ายสำเนาแผ่นรายการแล้วอ่านสำเนา ขณะอีกฝั่งแก้ต้นฉบับ
javaconcurrencycopyonwrite

CopyOnWriteArrayList: อ่าน snapshot ปลอดภัยตอน listener เยอะ

ใช้ CopyOnWriteArrayList เมื่ออ่านบ่อย เขียนน้อย และต้องการ iterator ที่ไม่สะดุดจาก concurrent modification

น้องกาย
นากกายจัดบัตรคีย์-ค่าเป็นแถวบนโต๊ะมิ้นต์ ชี้ใบแรกและใบท้าย
javacollectionssequenced-map

Java SequencedMap: first/last entry โดยไม่ต้องไล่ iterator เอง

ใช้ SequencedMap ของ LinkedHashMap เพื่อ putFirst/putLast และอ่าน firstEntry/lastEntry อย่างชัดเจน

น้องกาย
นากกายต้นฉบับกำลังเลื่อนไม้ชี้ระหว่างหมุดก่อนหน้าและหมุดถัดไปบนเส้นเวลา
javacollectionssearch

Java NavigableMap: หาเพดานและพื้นของช่วงเวลาโดยไม่วนทั้งตาราง

ใช้ floorEntry และ ceilingEntry เลือกค่าที่ใกล้ boundary พร้อมจัดการค่าว่างและคีย์ซ้ำ

พี่โชว์
นากกายต้นฉบับกำลังวางบัตรสถานะลงช่องตารางที่เรียงตามลำดับคงที่
javacollectionsenum

Java EnumMap: ทำตารางสถานะให้คีย์ครบและไม่รับ null key

ใช้ EnumMap กับคีย์ enum เพื่อเก็บค่ากะทัดรัด พร้อมตรวจ missing state อย่างชัดเจน

พี่โชว์
ปูสีส้มแดงต้นฉบับกำลังปรับชิ้นงานบนสายพานแล้วคัดชิ้นที่ไม่ผ่านลงถาดข้างโต๊ะ
rustcollectionsperformance

Rust Vec::retain_mut: แก้ค่าและกรองสมาชิกในรอบเดียวโดยรักษาลำดับ

ใช้ retain_mut ทำ normalization ก่อนตัดค่าที่ไม่ผ่าน พร้อมเข้าใจ ownership, panic และต้นทุนการเลื่อนข้อมูล

พี่โชว์
นากกายต้นฉบับเลื่อนถาดงานเข้าสายพานด้านหนึ่งและหยิบออกอีกด้านตามลำดับ
javacollectionsqueue

Java ArrayDeque: คิวงานสองด้านโดยไม่ต้องใช้ LinkedList

ใช้ addLast/removeFirst เป็น FIFO และ addFirst/removeFirst เป็น stack พร้อมข้อห้ามเรื่อง null และ thread safety

พี่โชว์
กล่องลิสต์ต้นทางและสำเนาแข็งบนโต๊ะมิ้นต์ มีแม่กุญแจสีอำพันที่สำเนา
javacollectionsimmutability

Java List.copyOf — สแนปช็อตลิสต์แบบอ่านอย่างเดียวในคำสั่งเดียว

ใช้ List.copyOf สร้างสำเนา immutable จาก Collection — กัน caller แก้ลิสต์ต้นทางโดยไม่ตั้งใจ พร้อมตัวอย่าง verified บน JDK 21

น้องกาย
ปูสีส้มแดงต้นฉบับใช้ก้ามสองข้างเปิดลิ้นชักแผนที่คนละช่อง โดยมีเส้นเตือนระหว่างช่องที่ห้ามซ้ำ
rusthashmapborrowing

Rust HashMap::get_disjoint_mut: แก้หลายค่าใน Map โดยไม่ชนกฎ Borrow

ใช้ get_disjoint_mut ยืมค่าหลาย key พร้อมกันอย่างปลอดภัย พร้อมเข้าใจ duplicate key, key ที่หาย และต้นทุนตรวจความซ้ำ

พี่โชว์
งูต้นฉบับเลื่อนลูกปัดเหตุการณ์ผ่านรางห้าช่อง โดยลูกปัดเก่าสุดตกลงถาดเมื่อของใหม่เข้ามา
pythoncollectionsdeque

Python deque(maxlen): เก็บประวัติล่าสุดโดยไม่ปล่อยหน่วยความจำโตไม่จบ

ใช้ collections.deque แบบกำหนด maxlen ทำ rolling window ที่ทิ้งของเก่าอัตโนมัติ พร้อมเทสต์ลำดับและขอบเขต

พี่โชว์
นากต้นฉบับรวมเม็ดนับสองรางลงช่องเดียวและยกถาดว่างออกจากชั้น
javacollectionsmap

Java Map.merge: รวม Counter และลบค่าศูนย์ด้วยกฎเดียว

ใช้ Map.merge อัปเดต inventory แบบ atomic ต่อ operation พร้อมเข้าใจความหมายของ null และกรณี concurrent map

พี่โชว์
งูต้นฉบับจัดเมล็ดถั่วหลายสีลงถาดนับจำนวนที่มีช่องบวกและลบ
pythoncollectionscounter

Python Counter.total: นับยอดรวม multiset โดยไม่เขียน sum(values) ซ้ำ

ใช้ Counter.total ร่วมกับการบวกและลบ multiset พร้อมทำความเข้าใจ count ศูนย์กับค่าติดลบ

พี่โชว์
มาสคอตแก้วกาแฟต้นฉบับเลื่อนการ์ดที่เพิ่งถูกหยิบไปท้ายชั้น และนำการ์ดเก่าสุดออกจากชั้นขนาดจำกัด
javacollectionscache

LinkedHashMap แบบ Access Order: ทำ LRU Cache เล็กให้เข้าใจได้

ใช้ accessOrder และ removeEldestEntry สร้าง bounded LRU พร้อมอธิบาย thread safety, null และเหตุผลที่ production cache อาจต้องใช้ library

พี่โชว์
นากกายส่งกล่องค่าตามท่อสตรีมเข้ากล่องลิสต์ปิดผนึกสีอำพันบนโต๊ะมิ้นต์
javastreamcollections

Stream.toList(): ได้ลิสต์ immutable โดยไม่ต้อง collect

อธิบาย Stream.toList ใน Java ที่คืน List แบบ unmodifiable พร้อมตัวอย่าง java-run เปรียบเทียบกับ Collectors.toList

น้องกาย
นากสีมิ้นต์ต้นฉบับกำลังใส่กล่องใบใหม่ลงช่องว่างในตู้ลิ้นชักสีเขียวอ่อน
javacollectionsmap

Java computeIfAbsent: สร้างค่าตอนจำเป็นโดยไม่ซ่อน side effect

ใช้ Map.computeIfAbsent สำหรับ grouping และ lazy cache พร้อมข้อควรระวัง null การแก้ map ซ้อน และ concurrency

พี่โชว์
งูสีมิ้นต์ต้นฉบับกำลังเลื้อยเชื่อมแผ่น config โปร่งสามชั้นบนโต๊ะสีครีม
pythoncollectionsconfiguration

Python ChainMap: ซ้อน config หลายชั้นโดยไม่รีบ copy

จัดลำดับ CLI environment และ defaults ด้วย ChainMap พร้อมทดสอบ precedence การเขียน และผลจาก mapping ต้นทาง

พี่โชว์
นากกายเรียงกล่องโทเคนจากหัวถึงท้ายแล้วพลิกมุมกลับบนโต๊ะมิ้นต์
javacollectionssequenced-collection

SequencedCollection: เข้าถึงหัว-ท้ายและมุมกลับในชุดที่มีลำดับ

แนะนำ SequencedCollection / SequencedSet / SequencedMap ตั้งแต่ Java 21 พร้อมตัวอย่าง public class Main ที่รันได้

น้องกาย
นากกายสีมิ้นต์ถ่ายสำเนาแผนที่ลงกระดาษใหม่ ข้าง ๆ มีกรอบใสที่ยังเชื่อมกับต้นฉบับ
javacollectionsimmutability

Java Map.copyOf คือ Snapshot แต่ unmodifiableMap ยังมองเห็นต้นฉบับเปลี่ยน

แยก immutable copy ออกจาก read-only view พร้อม assertions ที่เผย aliasing ของ map ต้นทาง

พี่โชว์