‫ในวิดีโอนี้ เราจะพูดถึงตัวชี้นำและเราจะมาดูวิธีใช้คิวในแอปพลิเคชันของเรา
‫คิวมีความสำคัญและใช้กันอย่างแพร่หลายในระบบปฏิบัติการของเรา เช่น เพื่อจัดการงาน การจัดกำหนดการ และกระบวนการอื่นๆ
‫อีกมากมาย
‫ควรใช้คิวเมื่อลำดับของข้อมูลมีความสำคัญ ดังที่เราจะเห็นในตัวอย่างของเรา
‫มาเริ่มกันเลย กำหนดคิวก่อน
‫ในการกำหนดคิว คุณสามารถใช้คิวได้
‫คิวคำสำคัญยังเป็นส่วนหนึ่งของคอลเลกชันทั่วไป ซึ่งหมายความว่าเราจำเป็นต้องกำหนดประเภทของคิวที่จะรวมเข้าไว้ด้วยกัน
‫ดังนั้น ในกรณีนี้ มันจะเก็บจำนวนเต็มจำนวนหนึ่ง แต่ก็สามารถเก็บชนิดอื่นได้เช่นกัน
‫มันสามารถเก็บสายได้ มันสามารถเก็บวัตถุทั้งหมดได้
‫ดังนั้นคุณจึงมีอิสระอย่างเต็มที่ในการกำหนดสิ่งที่คุณต้องการให้รายการนี้ถือ
‫ดังนั้นคิวจึงน้อยลงจากนั้นลงชื่อเข้าใช้เครื่องหมายที่มากขึ้นแล้วชื่อของคิวจะเท่ากับ
‫จากนั้นคุณสามารถเริ่มต้นได้ทันที เหมือนกับที่เราทำที่นี่ โดยที่เราสร้างคิวว่างที่มีจำนวนเต็ม
‫ตอนนี้เราสามารถดำเนินการเพิ่มรายการในคิวนี้ได้
‫หากต้องการเพิ่มรายการในคิว คุณสามารถใช้วิธีสิ้นสุดคิวได้
‫วิธีคิวเพิ่มวัตถุที่ส่วนท้ายของคิว
‫ดังนั้นถ้าฉันเพิ่มรายการเช่นรายการนี้จะเป็นรายการแรกเพราะเป็นรายการแรกที่เรารวมไว้
‫แต่ก็จะเป็นรายการสุดท้ายด้วย
‫ทันทีที่เราเพิ่มอีกรายการหนึ่ง รายการใหม่จะเป็นรายการสุดท้ายในคิว
‫นั่นคือวิธีการสั่งซื้อ
‫มันคล้ายกับสแต็ค แต่ความแตกต่างคือคิวเมื่อคุณกำจัดบางสิ่ง ดังนั้นเมื่อคุณเปิดไอเท็ม
‫มันจะเอามันไปจากจุดเริ่มต้นของคิว
‫ดังนั้นรายการที่สร้างขึ้นก่อนจะถูกนำออกไปหรือจะโผล่ออกมาจากคิวเพื่อที่จะพูด
‫ดังนั้นหากต้องการดูรายการคิว เราสามารถใช้วิธีพีคและวิธีพีคนี้จะแสดงรายการแรกในคิว
‫ดังนั้นหน้าคิวจึงจะพูด
‫ดังนั้นมันจึงเหมือนกับคิวของคนที่คุณอยู่ที่เคาน์เตอร์และคุณต้องการสั่งบางอย่าง
‫เช่น จากนั้นวิธีพีคจะให้คุณเป็นคนแรกในคิวนั้นที่กำลังจะสั่ง
‫ลองทำสิ่งนี้กันอย่างรวดเร็วและดูว่ามันจะออกมาเป็นอย่างไร
‫และเราเห็นค่าที่ด้านหน้าของคิวเป็นหนึ่ง
‫ตอนนี้ มาเพิ่มค่าอีกสองสามค่าเพื่อดูว่าจะส่งผลต่อแอปพลิเคชันของเราอย่างไร
‫ดังนั้นฉันจะเพิ่มรายการ Q ต่างๆ แบบนี้ ฉันจะจบ Q ที่หนึ่ง จากนั้นใน Q2 และ Q3 และฉันแค่ใช้ตัวเลขเหล่านี้
‫หนึ่ง สอง สาม
‫อาจมีตัวเลขอื่น ๆ เช่นกัน
‫ไม่จำเป็นต้องเป็นหนึ่ง สอง สาม
‫เมื่อมีจุดพีค เราก็ได้ไอเทมที่อยู่ต้นคิว
‫คุณสามารถเห็นได้ทุกครั้ง ไม่ว่าเราจะเพิ่มอะไรลงใน Q สิ่งหนึ่งจะเป็นรายการแรกของเราใน Q ดังนั้นมันจะเป็นรายการที่แสดงเมื่อเราใช้วิธีพีค
‫ตอนนี้เพื่อกำจัดรายการออกจากคิว คุณจะใช้วิธีคิว
‫ดังนั้นที่นี่
‫Q ดอท rd q ดังนั้น D q นี้จะกำจัดจำนวนเต็มแรกของ Q ของเราและมันจะเก็บมันทันทีเพื่อให้เราสามารถเก็บสิ่งนี้ได้
‫ลองเรียกสิ่งนี้ว่ารายการ Q หนึ่งรายการ จากนั้นจะเก็บผลลัพธ์ของ รายการ dict นี้
‫โดยพื้นฐานแล้วมันจะเก็บมันไว้ที่นั่นเพราะนั่นเป็นรายการแรกที่เรามีในรายการ
‫จากนั้นปักกิ่งจะแสดงสองรายการเพราะตอนนี้ไม่มีอีกต่อไป
‫รายการแรกหมดแล้ว
‫ดังนั้นตอนนี้ค่าใน Q จะเป็นสอง เพราะเราเพิ่งถอดรหัสรายการแรก
‫ดังนั้นมันจึงคล้ายกับป๊อปในสแต็ก แต่จะลบรายการที่จุดเริ่มต้นของ Q แทนที่จะเป็นจุดสิ้นสุดของ
‫Q หรือจุดสิ้นสุดของสแต็ก อย่างไรก็ตาม คุณต้องการดูอย่างไร
‫แน่นอน คุณสามารถลองจัดคิวรายการที่จุดเริ่มต้นได้
‫หากไม่มีองค์ประกอบภายในคิว แต่คุณจะพบข้อยกเว้นการดำเนินการที่ไม่ถูกต้อง
‫คิวว่างดังนั้นคุณจะต้องตรวจสอบว่าคิวว่างหรือไม่ก่อนที่จะรัน
‫ที่นี่เราสามารถรันเมธอดคิวได้เพราะเรารู้ว่าเราเพิ่งเข้ารหัสบางอย่าง
‫แต่มิฉะนั้น คุณจะใช้คุณสมบัติการนับของคิวเพื่อหาจำนวนรายการที่คุณมี
‫นี่คือคุณสมบัติที่คุณสามารถใช้ได้ รับจำนวนองค์ประกอบที่อยู่ในคิว
‫จากนั้นคุณสามารถตรวจสอบว่ามีค่ามากกว่าศูนย์หรือไม่ ตัวอย่างเช่น ตรวจสอบว่ามีอะไรอยู่ในคิวที่คุณทำได้
‫เช่น ,คิว.
‫ในตัวอย่างนี้ ฉันจะใช้ของฉันต่อไป
‫คุณนับเพื่อตรวจสอบซ้ำในขณะที่วนซ้ำหรือไม่?
‫และสำหรับทุกๆ รายการ ฉันจะจัดคิวและจดจำนวนรายการที่ยังอยู่ในคิวและรายการที่นำออกด้วย
‫ดังนั้นบรรทัดนี้ที่นี่จะลบรายการโดยเรียกวิธีคิวและในเวลาเดียวกันจะแสดงรายการที่นี่เพราะนั่นคือสิ่งที่เราใช้ที่นี่
‫เราใช้สตริงใช่มั้ย?
‫และด้วยตำแหน่งศูนย์นี้ มันจะแสดงผลลัพธ์ของการเรียกคิว
‫และอย่างที่คุณเห็นที่นี่ วิธีคิวจะส่งกลับจำนวนเต็ม
‫ดังนั้นเราจะแสดงตัวเลขที่นี่
‫ตกลง.
‫ให้ฉันกำจัดคิวนี้ที่ฉันใช้ที่นี่เพื่อสาธิตวิธีการรับไอเท็ม
‫และลองเรียกใช้อีกครั้ง
‫และคุณสามารถเห็นค่าที่ด้านหน้า ค่านี้
‫แล้วเราก็เริ่มวน Y ตรงนี้
‫นั่นคือส่วนที่น่าสนใจ
‫ดังนั้นหนึ่งคำจะถูกลบออกจากคิว
‫ตอนนี้เราเหลือเพียงสองรายการที่ถูกลบออกจากคิว
‫ตอนนี้เราเหลือเพียงหนึ่งรายการและสามรายการไม่ได้ถูกลบออกจากคิว
‫ตอนนี้เราเหลือเพียงศูนย์รายการ
‫ดังนั้นโดยทั่วไปคิวจะว่างเปล่า ณ จุดนั้น
‫ไม่เป็นไร.
‫ลองมาดูตัวอย่างในโลกแห่งความเป็นจริงกันดีกว่า
‫แน่นอน เราไม่ได้ทำงานกับฐานข้อมูลในตัวอย่างง่ายๆ นี้ แต่สมมติว่าเรามีแพลตฟอร์มอีคอมเมิร์ซและเราเป็นผู้ขาย
‫และเราได้รับคำสั่งซื้อจำนวนมาก
‫คำสั่งเหล่านี้ควรได้รับการประมวลผลเพื่อให้เวลาของเซิร์ฟเวอร์
‫ดังนั้นเวลารอสำหรับลูกค้าควรถูกเก็บไว้ให้น้อยที่สุด
‫นี่คือเหตุผลที่เราจะใช้คิวเพราะมันใช้งานได้จริงเพราะเราใส่ใจกับลำดับของคำสั่งที่เข้ามา
‫ลำดับของคำสั่ง มันค่อนข้างจะแปลกๆ ตรงนี้ แต่ลำดับของการรับข้อมูล
‫และจากข้อมูล ผมหมายถึงคำสั่งนั้นเอง
‫ลองดูคลาสง่ายๆ ที่เราจะสร้างที่นี่ และผมจะใส่ไว้ในไฟล์เดียวกันที่นี่
‫ลำดับคลาสนี้ที่มีคุณสมบัติ ID คำสั่งซื้อ คุณสมบัติปริมาณการสั่งซื้อ และจากนั้นตัวสร้าง
‫ซึ่งโดยทั่วไปจะตั้งค่าสองค่านั้นเมื่อเราสร้างออบเจ็กต์การสั่งซื้อ
‫จากนั้นเรามีข้อความพิมพ์หรือวิธีการสั่งซื้อกระบวนการนี้ ซึ่งจะพิมพ์ ID คำสั่งซื้อ ของรายการที่เรากำลังดูอยู่
‫ลำดับที่เรากำลังดูอยู่
‫ตอนนี้สิ่งที่ฉันต้องการจะทำคือฉันต้องการสร้างเมธอดภายในคลาสโปรแกรมของฉัน
‫ผมจะใส่มันลงในวงเล็บนี้ และวิธีที่พวกเขาจะดูแลคำสั่งจากสาขาต่างๆ
‫สมมุติว่าเรามีสาขาสองแห่งที่สามารถรับคำสั่งซื้อได้
‫สมมติว่าเรากำลังขายบน Amazon และในเวลาเดียวกันที่ Best Buy เป็นต้น
‫แล้วตอนนี้เราจะได้รับคำสั่งเหล่านั้น
‫ตอนนี้เราจะไม่ทำให้มันซับซ้อนเกินไปที่เราจะตรวจสอบว่าสาขาใดคือลำดับของสาขาต่างๆ
‫แน่นอนว่านี่คือสิ่งที่คุณสามารถเห็นเป็นความท้าทายเล็กน้อยสำหรับตัวคุณเองหากคุณต้องการพัฒนาสิ่งนั้น
‫แต่เรากำลังจะบอกว่า โอเค ให้คำสั่งจากสาขาที่ 1 ในลำดับที่ถูกต้อง และให้คำสั่งจากสาขาที่สองในลำดับที่ถูกต้องด้วย
‫ตกลง.
‫นี่จะเป็นสาขาที่หนึ่งที่มีคำสั่งซื้อจำนวนมาก แล้วเราก็มีสาขาที่สองที่มีคำสั่งซื้อจำนวนมาก
‫ดังนั้นเราจึงได้ข้อมูล
‫สมมติว่าเราได้รับข้อมูลนี้จากฐานข้อมูลที่เราตรวจสอบ ตกลง คำสั่งคืออะไร
‫และเราอาจจะตรวจสอบพวกเขาตามวันที่
‫ดังนั้นแต่ละคำสั่งก็จะได้รับวันที่เช่นกัน
‫ที่นี่เรามีรหัสคำสั่งซื้อ แต่โดยปกติเราจะพยายามจัดเก็บเมื่อมีการสั่งซื้อและอื่นๆ
‫แต่เราจะทำให้มันง่ายสำหรับตัวอย่างนี้
‫ตอนนี้เรามีอาร์เรย์ของคำสั่งในทั้งสองตัวอย่าง
‫และเมื่อเราเรียกใช้เมธอด รับออร์เดอร์จากสาขาที่ 1 และ 2 โดยพื้นฐานแล้วจะทำการรีเทิร์นและออร์เดอร์อาร์เรย์
‫ดังนั้นนี่คืออาร์เรย์ของคำสั่ง
‫นั่นคือสิ่งที่คำสั่งนี้ทำ ส่งคืนคำสั่งซื้อ
‫ในตัวอย่างเฉพาะของเรา อันที่จริงแล้ว รหัสคำสั่งซื้อจะไม่ซ้ำกันสำหรับคำสั่งซื้อที่แตกต่างกันสองรายการ
‫ดังนั้นพวกเขาจะอยู่ในลำดับที่ถูกต้องแล้ว
‫นี่ก็คือลำดับที่หนึ่ง นี่คือลำดับที่สอง
‫จากนั้นเราก็สั่งสามและสั่งสี่และห้าจากสาขาที่สอง
‫และในตอนเย็น ที่สาขาหนึ่ง มีออเดอร์อื่นเข้ามา และมีคนซื้อสินค้าของเราสิบชิ้น
‫ตอนนี้ในวิธีหลักของเรา เราสามารถสร้างคิวและให้ฉันกำจัดสิ่งนี้ทั้งหมดที่นี่
‫ในวิธีการหลักของเรา ตอนนี้ เราสามารถดำเนินการสร้างคิวของคำสั่งซื้อได้
‫ดังนั้นที่นี่คิวสั่ง
‫คุณจะเห็นว่านี่จะไม่ใช่ประเภทธรรมดาๆ อย่างจำนวนเต็มในตอนนี้ แต่จริงๆ แล้วมันจะเก็บคำสั่งจำนวนมาก
‫นั่นคือสิ่งที่เจ๋งเกี่ยวกับคิว
‫ดังนั้นมันจึงไม่ใช่แค่ประเภทธรรมดาๆ และผมจะเรียกคำสั่งนี้ว่าคิวเดียว และผมจะเริ่มต้นมันทันทีที่นี่
‫จากนั้น ณ จุดนี้ เราสามารถไปข้างหน้าและจัดคิวคำสั่งซื้อทั้งหมดที่เราได้รับจาก Branch one โดยใช้ this
‫for loop ที่นี่ สำหรับแต่ละลูป
‫เรากำลังดำเนินการทุกคำสั่งที่ฉันจะโทรไป
‫โอ้ ในนี้สำหรับแต่ละลูปและการวนซ้ำนี้ในการรับคำสั่งซื้อของเราจากสาขาที่หนึ่ง
‫ตอนนี้ที่นี่จะเป็นอาร์เรย์เรียงลำดับประเภท
‫ดังนั้นเมื่อเราเรียกวิธีนี้ มันจะส่งคืนอาร์เรย์ของคำสั่งดังที่คุณเห็นที่นี่
‫โดยพื้นฐานแล้วสิ่งนี้สำหรับแต่ละลูปจะผ่านคำสั่งที่เรามีในอาร์เรย์ลำดับนี้และจะตรวจสอบทุกคำสั่ง
‫ทั้งหมดจะอยู่ในลำดับนี้ก่อน จากนั้นจึงจะเป็นลำดับนี้ จากนั้นจึงจะเป็นลำดับนั้น
‫และสำหรับทุกๆ คน มันจะจบคิวคำสั่งเหล่านั้น
‫นั่นคือสิ่งที่แต่ละลูปทำ
‫จากนั้นเราสร้างอีกอันสำหรับแต่ละลูปสำหรับสาขาอื่นเช่นกัน
‫ดังนั้น.
‫กันไปที่นี่สำหรับแต่ละลูปหรือตามลำดับที่ได้รับจากสาขาที่สอง
‫นี่คือสาขาที่สอง
‫นี่คือสาขาหนึ่ง
‫และเช่นเดียวกัน
‫จึงใช้แนวคิดเดียวกัน
‫ดังนั้นในการประมวลผลคำสั่งซื้อ เราจะดำเนินการตามคิวของเราทีละรายการ จากนั้นเราจะลบองค์ประกอบออกจากคิวของเราและดำเนินการจนกว่าคิวของเราจะว่างเปล่าและคำสั่งซื้อทั้งหมดจะได้รับการประมวลผลในที่สุด
‫นั่นเป็นเหตุผลที่เรามีวิธีการสั่งซื้อตามกระบวนการที่นี่ ซึ่งจะประมวลผลคำสั่งซื้อ
‫ดังนั้นตอนนี้เราสามารถไปข้างหน้าและแทนที่จะใช้วิธีหลักของเราที่นี่เมื่อเรามีคิวคำสั่งซื้อที่มีรายการทั้งหมดอยู่ในนั้นแล้วเราสามารถผ่านมันไปได้และเราสามารถตรวจสอบว่าคิวการสั่งซื้อไม่ว่างเปล่าและตราบเท่าที่
‫ไม่ว่างเปล่า
‫ตราบใดที่จำนวนคิวคำสั่งมากกว่าศูนย์ เราจะดำเนินการนี้ในขณะที่วนรอบและเราจะลบคำสั่งที่อยู่ด้านหน้าของคิว
‫ดังนั้นการเรียงลำดับที่มาก่อนจึงจะพูดและเก็บไว้ในตัวแปรที่เรียกว่าลำดับปัจจุบัน
‫ดังนั้นเราจึงมีออบเจกต์คำสั่งที่จะเรียกว่า คำสั่งปัจจุบัน ซึ่งโดยพื้นฐานแล้วจะเป็นผลของคิวในรายการแรกของคิวคำสั่งซื้อของเรา
‫โดยพื้นฐานแล้วการเอาของชิ้นนี้ก่อน ตามด้วยของชิ้นนั้น ของชิ้นนั้น ของชิ้นนี้ อันนั้น และอันนั้น
‫แล้วมันก็จะประมวลผลทีละอย่างทีละขั้น
‫ดังนั้นการประมวลผลและกรณีของเราจะเป็นสิ่งที่ง่ายมาก
‫มันจะพิมพ์ลงบนคอนโซล
‫แต่แน่นอน คุณสามารถเรียกใช้บางสิ่งที่ซับซ้อนกว่าในเบื้องหลังได้ที่นี่
‫การทำเช่นนี้อาจทำให้บางกิจกรรมส่งอีเมลออกไป เช่น ถึงพนักงานที่มีเวลาดูแลหรือระบบการประมวลผลใดๆ
‫ที่คุณใช้ในบริษัทของคุณ
‫ไม่เป็นไร.
‫และใช่ นั่นคือโดยพื้นฐานแล้ว
‫ตอนนี้ให้เรียกใช้แอปพลิเคชันนี้เพื่อดูผลลัพธ์
‫และเราสามารถเห็นคำสั่งซื้อที่ดำเนินการแล้ว
‫คำสั่งที่สองได้รับการประมวลผลแล้วจึงสั่งหก แล้วก็สาม สี่ ห้า
‫ดังนั้นเราจึงดำเนินการตามคำสั่งซื้อ
‫แน่นอน ในการที่เราจัดคิวพวกเขาด้วยการที่เราจบคิวพวกเขา
‫คุณจะเห็นว่าเราอยู่ในคิวจากสาขา 1/1 และจากสาขาที่สอง
‫ลองจินตนาการถึงสถานการณ์ต่อไปนี้ที่คำสั่งที่สร้างขึ้นในระบบภายใน แต่ก่อนอื่นต้องได้รับการยอมรับและผลักดันอย่างเต็มที่ไปยังเอนทิตีการประมวลผล
‫ไม่ว่าเอนทิตีนั้นจะเป็นเช่นไร เช่น สำนักงานอื่น เป็นต้น
‫และพวกเขาทำมันในตอนท้ายของวันเช่น
‫สาขาแรกที่ทำของเสร็จก็บอกว่า โอเค เรารับออเดอร์พวกนั้น
‫และหลังจากนั้นในวันนั้น เพราะสมมติว่าพวกเขาอยู่ในเขตเวลาอื่น
‫ตัวอย่างเช่น สาขาที่สองพูดว่า ใช่ เราเห็นด้วย
‫เราส่งคำสั่งซื้อของเราตามที่ได้รับอนุมัติ ณ จุดนั้นด้วย จากนั้นคำสั่งซื้อจะเริ่มดำเนินการ
‫นั่นเป็นวิธีพิจารณาตัวอย่างนี้ ใช่ไหม?
‫มิฉะนั้น แน่นอน คุณจะสั่งพวกเขาทันทีตาม ID ของพวกเขาหรือตามเวลาที่สร้างขึ้น
‫ไม่เป็นไร.
‫ตอนนี้คุณคงทราบแล้วว่าคำสั่งเหล่านี้ทำงานอย่างไรและคิวทำงานอย่างไร
‫นั่นคือส่วนที่สำคัญกว่า
‫ดังนั้นตอนนี้ คุณสามารถสร้างคิวของคุณเองและใช้ในแอปพลิเคชันของคุณได้
‫ไม่เป็นไร.
‫ดังนั้นฉันหวังว่าคุณจะชอบวิดีโอนี้
‫เจอกันใหม่ตอนหน้าครับ