‫Trong video này, chúng tôi sẽ đề cập đến các gợi ý và chúng tôi sẽ xem cách sử dụng hàng đợi trong các ứng dụng của chúng tôi.
‫Hàng đợi rất quan trọng và được sử dụng rất nhiều bởi hệ điều hành của chúng tôi, chẳng hạn như để xử lý các tác vụ,
‫lập lịch và nhiều quy trình khác.
‫Hàng đợi nên được sử dụng khi thứ tự của dữ liệu là quan trọng, như chúng ta sẽ thấy trong ví dụ của mình.
‫Vì vậy, hãy tiếp tục và trước hết, hãy xác định một hàng đợi.
‫Để xác định hàng đợi, bạn có thể sử dụng hàng đợi.
‫Hàng đợi từ khóa cũng là một phần của bộ sưu tập chung, có nghĩa là chúng ta cần xác
‫định loại hàng đợi sẽ kết hợp.
‫Vì vậy, trong trường hợp này, nó sẽ chứa một loạt các số nguyên, nhưng nó cũng có thể chứa bất kỳ loại nào khác.
‫Nó có thể chứa những sợi dây, nó có thể chứa cả một vật thể.
‫Vì vậy, bạn hoàn toàn có thể tự do xác định bất kỳ thứ gì bạn muốn mục này chứa.
‫Vì vậy, hàng đợi sau đó ít hơn, sau đó đăng nhập vào dấu lớn hơn và sau đó tên của hàng đợi bằng.
‫Và sau đó bạn có thể khởi tạo nó ngay lập tức như chúng ta làm ở đây, nơi chúng ta chỉ tạo một hàng đợi trống
‫chứa các số nguyên.
‫Vì vậy, bây giờ chúng ta có thể tiếp tục và thêm các mục vào hàng đợi này.
‫Để thêm các mục vào hàng đợi, bạn có thể sử dụng phương thức hàng đợi kết thúc.
‫Phương thức hàng đợi thêm một đối tượng vào cuối hàng đợi.
‫Vì vậy, nếu tôi thêm một mục giống như một, chẳng hạn, mục này sẽ là mục đầu tiên vì tốt, đó là mục đầu tiên
‫mà chúng tôi đưa vào, nhưng cũng sẽ là mục cuối cùng.
‫Vì vậy, ngay sau khi chúng tôi thêm một cái khác, mục mới sẽ là mục cuối cùng trong hàng đợi.
‫Vì vậy, đó là cách đặt hàng được thực hiện.
‫Nó tương tự như một ngăn xếp, nhưng sự khác biệt là một hàng đợi khi bạn loại bỏ một thứ
‫gì đó, vì vậy khi bạn mở một mục, nó sẽ lấy nó từ đầu hàng.
‫Vì vậy, mục được tạo trước sẽ bị lấy đi hoặc sẽ được bật ra khỏi hàng đợi, có thể nói như vậy.
‫Vì vậy, để xem xét các mục trong hàng đợi, chúng ta có thể sử dụng phương pháp đỉnh và phương thức đỉnh này sẽ hiển thị mục đầu tiên trong hàng
‫đợi, vì vậy có thể nói là ở phía trước của hàng đợi.
‫Vì vậy, nó giống như một hàng đợi của những người mà bạn đang ở quầy và bạn muốn đặt một thứ gì đó, chẳng hạn,
‫sau đó phương pháp đỉnh cao sẽ cung cấp cho bạn người đầu tiên trong hàng đó sắp đặt hàng.
‫Vì vậy, hãy chạy nhanh thực sự này và xem nó sẽ như thế nào.
‫Và chúng tôi thấy giá trị ở phía trước của hàng đợi là một.
‫Bây giờ chúng ta hãy thêm một vài giá trị nữa để xem điều đó sẽ ảnh hưởng đến ứng dụng của chúng ta như thế nào.
‫Vì vậy, ở đây tôi sẽ thêm các mục Q khác nhau như vậy tôi sẽ kết thúc Q một sau đó ở Q2 và Q3, và tôi chỉ sử dụng
‫các số này một, hai, ba.
‫Cũng có thể có bất kỳ con số nào khác.
‫Nó không thực sự phải là một, hai, ba.
‫Vì vậy, với đỉnh, chúng tôi nhận được mục ở đầu hàng đợi.
‫Bạn có thể thấy mọi lúc, bất kể chúng ta thêm cái gì vào Q, cái đó sẽ là mục đầu tiên của chúng ta trong Q, vì vậy
‫nó sẽ là mục được hiển thị khi chúng ta sử dụng phương pháp đỉnh.
‫Bây giờ để loại bỏ một mục khỏi hàng đợi, bạn sẽ sử dụng phương thức hàng đợi.
‫Nên ở đây.
‫Q dot rd q nên D q này bây giờ sẽ loại bỏ số nguyên đầu tiên của Q của chúng ta và nó cũng sẽ lưu trữ nó ngay lập
‫tức để chúng ta có thể lưu trữ nó, ví dụ, chúng ta hãy gọi đây là một Q item, và sau đó nó sẽ lưu
‫trữ kết quả của mục này.
‫Vì vậy, về cơ bản nó sẽ lưu trữ một trong đó vì đó là mục đầu tiên mà chúng tôi có trong danh sách.
‫Và sau đó Bắc Kinh sẽ hiển thị hai vì bây giờ một không còn ở đó nữa.
‫Mục đầu tiên đã biến mất.
‫Vì vậy, bây giờ giá trị trong Q sẽ là hai vì tốt, chúng tôi chỉ giải mã mục đầu tiên.
‫Vì vậy, nó tương tự như bật trong một ngăn xếp, nhưng nó lấy đi vật phẩm ở đầu Q thay vì
‫ở cuối Q hoặc cuối ngăn xếp, tuy nhiên bạn muốn nhìn vào nó.
‫Tất nhiên, bạn cũng có thể cố gắng xếp hàng ngay từ đầu.
‫Nếu không có phần tử nào bên trong hàng đợi, nhưng bạn sẽ gặp phải một ngoại lệ hoạt động không hợp lệ.
‫Hàng đợi trống vì vậy bạn sẽ cần phải kiểm tra xem hàng đợi có trống hay không trước khi chạy nó.
‫Vì vậy, ở đây chúng ta có thể chạy phương thức hàng đợi vì chúng ta biết rằng chúng ta chỉ mã hóa một cái gì đó.
‫Nhưng nếu không, bạn sẽ sử dụng thuộc tính count của hàng đợi của mình để tính xem bạn có bao nhiêu mặt hàng
‫ở đó.
‫Vì vậy, đây là thuộc tính mà bạn có thể sử dụng, lấy số phần tử có trong hàng đợi
‫và sau đó bạn có thể kiểm tra xem cái đó có lớn hơn 0 không, chẳng hạn, để kiểm tra
‫xem có thứ gì trong hàng đợi mà bạn có thể không. , hàng đợi.
‫Vì vậy, trong ví dụ cụ thể này, tôi sẽ tiếp tục và sử dụng của tôi.
‫Bạn có đếm để kiểm tra lại trong một vòng lặp while không?
‫Và đối với mỗi mặt hàng, tôi sẽ xếp nó vào hàng và cũng viết ra số lượng mặt hàng vẫn còn trong hàng đợi
‫và cả mặt hàng đã bị loại bỏ.
‫Vì vậy, dòng này ở đây sẽ loại bỏ mục bằng cách gọi phương thức hàng đợi và đồng thời nó sẽ hiển thị mục ngay
‫tại đây vì đó là những gì chúng ta đang sử dụng ở đây.
‫Chúng ta đang sử dụng chuỗi, phải không?
‫Và với vị trí 0 này, nó sẽ hiển thị bất kỳ kết quả nào là kết quả của cuộc gọi hàng đợi.
‫Và như bạn có thể thấy ở đây, phương thức hàng đợi sẽ trả về một số nguyên.
‫Vì vậy, chúng tôi sẽ hiển thị một số ở đây.
‫Được chứ.
‫Vì vậy, hãy để tôi loại bỏ gợi ý mà tôi đã sử dụng ở đây để trình bày cách tạo lại một mục.
‫Và hãy chạy lại.
‫Và bạn có thể thấy giá trị ở phía trước, cái này.
‫Và sau đó về cơ bản chúng ta bắt đầu vòng lặp Y ở đây.
‫Đó là phần thú vị.
‫Vì vậy, một từ bị loại bỏ khỏi hàng đợi.
‫Bây giờ chúng tôi chỉ còn lại hai mục để được xóa khỏi hàng đợi.
‫Bây giờ chúng tôi chỉ còn lại một mục và ba mục chưa bị xóa khỏi hàng đợi.
‫Bây giờ chúng tôi chỉ còn lại không có mục nào.
‫Vì vậy, về cơ bản hàng đợi trống tại thời điểm đó.
‫Được rồi.
‫Vì vậy, chúng ta hãy xem xét một ví dụ ít nhiều trong thế giới thực.
‫Tất nhiên, chúng tôi không làm việc với cơ sở dữ liệu trong ví dụ đơn giản này ở đây, nhưng giả sử chúng tôi có một nền tảng thương mại
‫điện tử và chúng tôi là người bán và chúng tôi nhận được một loạt các đơn đặt hàng.
‫Các đơn đặt hàng này nên được xử lý sao cho thời gian của máy chủ.
‫Vì vậy, thời gian chờ đợi của khách hàng nên được giữ ở mức tối thiểu.
‫Đây là lý do tại sao chúng tôi sẽ sử dụng hàng đợi vì chúng rất thiết thực vì chúng
‫tôi quan tâm đến thứ tự của các đơn hàng đến.
‫Vì vậy, thứ tự của các đơn đặt hàng, ở đây có một chút líu lưỡi, nhưng thứ tự mà dữ liệu được
‫nhận và theo dữ liệu, ý tôi là chính các đơn đặt hàng.
‫Vì vậy, hãy nhìn vào lớp rất đơn giản này mà chúng ta sẽ xây dựng ở đây, và tôi sẽ đặt nó bên
‫trong cùng một tệp ở đây.
‫Thứ tự lớp này với thuộc tính ID đặt hàng, thuộc tính số lượng đặt hàng và sau đó là hàm tạo, về cơ bản
‫chỉ đặt hai giá trị đó khi chúng ta tạo một đối tượng đặt hàng và sau đó chúng
‫ta có thông báo in này hoặc phương thức đặt hàng quá trình này sẽ in ID đơn hàng của mặt hàng mà chúng tôi hiện đang xem, so
‫với đơn đặt hàng mà chúng tôi hiện đang xem.
‫Vì vậy, bây giờ những gì tôi muốn làm là tôi thực sự muốn tạo các phương thức bên trong lớp chương trình của mình.
‫Vì vậy, tôi sẽ đưa nó vào đây bên trong khung này và các phương pháp mà họ sẽ thực hiện các
‫đơn đặt hàng từ các nhánh khác nhau.
‫Vì vậy, giả sử chúng tôi có hai chi nhánh khác nhau, nơi chúng tôi có thể nhận đơn đặt hàng.
‫Ví dụ: giả sử chúng tôi đang bán hàng trên Amazon và đồng thời tại Best Buy.
‫Và sau đó bây giờ chúng ta sẽ nhận được những đơn đặt hàng đó.
‫Bây giờ chúng ta sẽ không làm cho nó quá phức tạp mà chúng ta sẽ kiểm tra xem nhánh nào, tốt, thứ
‫tự của các nhánh khác nhau.
‫Tất nhiên, đây là điều bạn có thể coi là một thử thách nhỏ cho bản thân nếu bạn muốn phát triển điều
‫đó.
‫Nhưng chúng tôi sẽ nói, được rồi, hãy giao cho tôi lệnh từ Chi nhánh một theo đúng thứ tự và
‫cung cấp cho tôi lệnh từ Chi nhánh hai theo đúng thứ tự.
‫Được chứ.
‫Vì vậy, đây sẽ là Nhánh một với một loạt các lệnh và sau đó chúng ta có Nhánh hai với một loạt các
‫lệnh.
‫Vì vậy, chúng tôi đang lấy dữ liệu.
‫Giả sử chúng tôi lấy dữ liệu này từ cơ sở dữ liệu nơi chúng tôi đang kiểm tra, được rồi, đơn đặt hàng là gì?
‫Và chúng tôi có thể sẽ kiểm tra chúng theo ngày tháng.
‫Vì vậy, mỗi đơn đặt hàng cũng sẽ có một ngày.
‫Ở đây chúng tôi có ID đơn đặt hàng, nhưng thông thường chúng tôi cũng sẽ cố gắng lưu trữ khi nó được đặt hàng, v.v.
‫Nhưng chúng tôi sẽ giữ nó đơn giản cho ví dụ này.
‫Vì vậy, bây giờ chúng tôi có một loạt các đơn đặt hàng trong cả hai ví dụ đó.
‫Và khi chúng ta gọi phương thức, nhận lệnh từ nhánh một và nhánh hai, về cơ bản chúng sẽ chỉ lần lượt và
‫đặt hàng mảng.
‫Vì vậy, đây là một loạt các đơn đặt hàng.
‫Vì vậy, đó là những gì câu lệnh này ở đây làm, trả lại đơn đặt hàng.
‫Bây giờ trong ví dụ cụ thể của chúng tôi, ID đơn đặt hàng trên thực tế sẽ là duy nhất cho hai đơn đặt hàng khác nhau.
‫Vì vậy, chúng sẽ theo đúng thứ tự, có thể nói như vậy.
‫Vì vậy, đây là đơn đặt hàng một, đây là đơn đặt hàng hai.
‫Sau đó, chúng tôi đặt hàng ba và đặt hàng bốn và năm từ chi nhánh hai.
‫Và sau đó vào buổi tối, ở Chi nhánh một, có một đơn đặt hàng khác và ai đó đã mua mười mặt hàng của
‫chúng tôi.
‫Bây giờ trong phương pháp chính của chúng tôi, chúng tôi có thể tạo một hàng đợi và để tôi thực sự loại bỏ tất cả những thứ này ở đây.
‫Trong phương pháp chính của chúng tôi, bây giờ chúng tôi có thể tiếp tục và tạo một hàng đợi đơn đặt hàng.
‫Vì vậy, ở đây xếp hàng thứ tự.
‫Bạn có thể thấy rằng đây sẽ không phải là một kiểu đơn giản như số nguyên bây giờ, nhưng nó
‫thực sự sẽ chứa một loạt các lệnh.
‫Đó là điều thú vị về hàng đợi.
‫Vì vậy, nó không chỉ là các kiểu đơn giản và tôi sẽ gọi đây là một hàng đợi đơn hàng và tôi sẽ khởi tạo nó
‫ngay lập tức tại đây.
‫Và sau đó tại thời điểm này, chúng tôi có thể tiếp tục và xếp hàng tất cả các đơn đặt hàng của chúng tôi mà chúng tôi nhận được từ Chi nhánh một bằng cách sử dụng
‫vòng lặp for tại đây, điều này cho mỗi vòng lặp.
‫Vì vậy, chúng tôi đang xem xét từng đơn đặt hàng mà tôi sẽ gọi.
‫Ồ, trong cái này cho mỗi vòng lặp và lần lặp này trong chúng tôi nhận được lệnh từ nhánh một.
‫Bây giờ đây sẽ là kiểu mảng thứ tự.
‫Vì vậy, khi chúng ta gọi phương thức này, nó sẽ trả về một mảng lệnh như bạn thấy ở đây.
‫Vì vậy, về cơ bản điều này cho mỗi vòng lặp sẽ đi qua các đơn đặt hàng mà chúng ta có bên trong mảng thứ tự này và nó
‫sẽ xem xét từng đơn hàng trong số chúng.
‫Vì vậy, tất cả đầu tiên sẽ là đơn đặt hàng này, sau đó sẽ là đơn đặt hàng này, sau đó sẽ là đơn đặt hàng đó.
‫Và đối với mỗi người trong số họ, nó sẽ kết thúc hàng đợi các đơn đặt hàng đó.
‫Vì vậy, đó là những gì điều này cho mỗi vòng lặp.
‫Và sau đó chúng tôi tạo một vòng lặp khác cho mỗi vòng lặp cho nhánh khác.
‫Vì thế.
‫Tương tự ở đây cho mỗi vòng lặp hoặc trong các đơn đặt hàng nhận được từ nhánh hai.
‫Vì vậy, đây là Chi nhánh hai.
‫Đây là nhánh một.
‫Và điều tương tự cũng được áp dụng.
‫Vì vậy, khái niệm tương tự được áp dụng.
‫Vì vậy, để xử lý các đơn đặt hàng, chúng tôi sẽ lần lượt đi qua hàng đợi của mình, sau đó chúng tôi sẽ xóa các phần tử khỏi hàng đợi
‫của mình và xử lý chúng cho đến khi hàng của chúng tôi trống và tất cả các đơn hàng cuối cùng đã được xử lý.
‫Đó là lý do tại sao chúng tôi có phương thức đặt hàng theo quy trình này ở đây, phương thức này sẽ xử lý các đơn đặt hàng.
‫Vì vậy, bây giờ chúng ta có thể tiếp tục và thay vì phương pháp chính của chúng ta ở đây, khi chúng ta có hàng đợi đơn đặt
‫hàng với tất cả các mặt hàng trong đó, chúng ta có thể xem qua nó và chúng ta có thể kiểm tra xem hàng đợi đặt hàng có trống không và miễn là
‫nó không rỗng.
‫Vì vậy, miễn là số lượng hàng đợi đơn đặt hàng lớn hơn 0, chúng tôi sẽ thực hiện
‫vòng lặp while này và chúng tôi sẽ xóa đơn hàng ở phía trước hàng đợi.
‫Vì vậy, thứ tự đến trước, có thể nói, và lưu trữ nó trong một biến được gọi là thứ tự hiện tại.
‫Vì vậy, chúng tôi có đối tượng đặt hàng này sẽ được gọi là Đơn hàng hiện tại, về cơ bản sẽ là kết
‫quả của hàng đợi trong mục đầu tiên của hàng đợi đơn đặt hàng của chúng tôi.
‫Vì vậy, về cơ bản là lấy đi mặt hàng này trước, sau đó đến mặt hàng này, sau đó đến mặt hàng kia, sau đó là mặt hàng này, rồi đến thứ kia và sau
‫đó là thứ kia.
‫Và sau đó nó sẽ xử lý từng bước một.
‫Vì vậy, xử lý và trường hợp của chúng tôi sẽ chỉ là một cái gì đó rất đơn giản.
‫Nó sẽ chỉ in nó lên bảng điều khiển.
‫Nhưng tất nhiên, bạn có thể chạy một thứ gì đó phức tạp hơn ở chế độ nền ở đây.
‫Điều này có thể kích hoạt một số sự kiện gửi email, ví dụ: cho một nhân viên có thời
‫gian chăm sóc nó hoặc bất kỳ hệ thống xử lý nào mà bạn đã sử dụng trong công ty của mình.
‫Được rồi.
‫Và yeah, về cơ bản là vậy.
‫Vì vậy, bây giờ chúng ta hãy chạy ứng dụng này để xem kết quả.
‫Và chúng ta có thể thấy đơn đặt hàng một đã được xử lý.
‫Đơn đặt hàng hai đã được xử lý, sau đó đặt hàng sáu, rồi ba, bốn, năm.
‫Vì vậy, chúng tôi đang xử lý các đơn đặt hàng.
‫Tất nhiên, theo thứ tự mà chúng tôi đã xếp hàng cùng với chúng tôi xếp hàng cuối cùng.
‫Bạn có thể thấy ở đây chúng tôi đang xếp hàng từ nhánh 1/1 và sau đó từ nhánh hai.
‫Vì vậy, chỉ cần tưởng tượng cho tình huống sau khi các đơn đặt hàng được tạo trong nội
‫bộ hệ thống, nhưng trước tiên chúng phải được chấp nhận và được đẩy hoàn toàn đến thực thể xử lý, bất kể thực thể đó
‫là gì, chẳng hạn như văn phòng khác hoặc tương tự.
‫Và họ làm điều đó vào cuối ngày chẳng hạn.
‫Vì vậy, chi nhánh đầu tiên hoàn thành công việc của họ và họ nói, được rồi, chúng tôi chấp nhận những đơn đặt hàng đó.
‫Và sau đó vào ngày hôm đó, vì giả sử họ ở múi giờ khác.
‫Ví dụ, Chi nhánh hai nói, Vâng, chúng tôi đang đồng ý.
‫Chà, chúng tôi cũng gửi các đơn đặt hàng của mình khi được chấp thuận tại thời điểm đó, và sau đó chúng bắt đầu
‫được xử lý.
‫Vì vậy, đó là cách ví dụ này có thể được xem xét, chẳng hạn, phải không?
‫Nếu không, tất nhiên, bạn sẽ đặt hàng chúng ngay lập tức dựa trên ID của chúng hoặc dựa trên thời
‫gian chúng được tạo.
‫Được rồi.
‫Vì vậy, bây giờ bạn đã có một số ý tưởng nhất định về cách các đơn đặt hàng này hoạt động và cách các hàng đợi hoạt động.
‫Đó là phần quan trọng hơn.
‫Vì vậy, bây giờ bạn có thể tạo hàng đợi của riêng mình và sử dụng chúng trong các ứng dụng của bạn.
‫Được rồi.
‫Vì vậy, tôi hy vọng bạn thích video này.
‫Hẹn gặp lại các bạn trong những bài tiếp theo.