2013-04-13 25 views
15

Tôi đang cố gắng sử dụng Stack, nhưng tôi hơi bối rối bởi thuật ngữ.Java Stack push() vs add()

Tôi thấy rằng Stack lớp chỉ có push(E e) theo tài liệu Java.

Và có add(E e)addAll(Collection<? extends E> c) làm phương pháp kế thừa từ lớp Vector.

Chúng có cùng chức năng hay không hoặc sử dụng push(...) để chèn các phần tử vào đối tượng Stack là tốt hơn.

Nói cách khác, tôi có gặp phải bất kỳ sự cố nào nếu tôi sử dụng add(...) thay vì push(...) không?

+1

đó là các lớp cũ không còn được sử dụng nữa. bạn đang cố làm gì vậy? – radai

+0

Một tác dụng phụ không may của việc mở rộng từ 'Vector', mà không nên được thực hiện. –

Trả lời

10

Kalyanaraman Santhanam:

Edit: Tôi có gặp phải bất kỳ vấn đề nếu tôi sử dụng thêm (...) thay vì push (...)?

chắc chắn là, bạn sẽ không gặp bất kỳ vấn đề, bởi vì add là một phần của giao diện List cũng như Stack, nhưng bạn nên chú ý đến sự có thể đọc thêm về mã của bạn và ý định của bạn trong nó bằng cách lập trình viên khác. push phương pháp sẽ cung cấp cho họ một đầu mối mà họ đang sử dụng các đối tượng Stack, họ sẽ biết chắc chắn những gì mong đợi từ. Cũng lưu ý rằng push có giá trị trả về khác với add (trước đây có loại "đối tượng được đẩy" và sau chỉ trả lời là boolean)

1

Chúng giống nhau.

Từ JavaDoc:

Đẩy một mục vào phía trên cùng của ngăn xếp này. Đây có giống hệt nhau hiệu lực thi hành:

addElement(item) 
+2

Nhưng isnt addElement() và thêm() hai hàm khác nhau? –

+3

vâng, đó là ... xin vui lòng đọc JAVADoc, đó là lý do tại sao chúng tôi có nó – Frank

0

Đó là tất cả về các vấn đề thừa kế, nếu nó là một Stack bạn nên sử dụng push() phải rõ ràng và làm theo để mô hình. Nhưng, trên thực tế từ thông số Java SE:

Đẩy một mục lên trên cùng của ngăn xếp này. Điều này có chính xác tác dụng tương tự như:addElement(item)

1

Nếu bạn đang sử dụng một Stack thì bạn nên sử dụng push() vì đây là cách tiêu chuẩn để thêm các yếu tố vào một chồng (do ý tưởng của cấu trúc dữ liệu của một Stack) . Điều này có nghĩa là "đầu ngăn xếp" là mục bạn chỉ cần push() ed.

Bạn chỉ nên thêm và xóa từ đầu Stack và nếu bạn cho rằng mình sẽ cần thêm các cách khác để thêm dữ liệu (thêm vào giữa hoặc cuối) thì tôi khuyên bạn nên sử dụng mã số Stack. khó hiểu hơn.

Edit: (phản ánh câu hỏi chỉnh sửa) Như tôi đã đề cập, tôi sẽ không mong đợi để xem add() nếu tôi được làm việc với một Stack. add() không phải là cú pháp chuẩn để sử dụng một số Stack, push(). Tôi khuyên bạn chỉ nên sử dụng các chức năng được xác định trong phần chính của javadoc trừ khi bạn cần những thứ được kế thừa.

1

(xin lỗi nếu tiếng anh của tôi không tốt, tôi là từ MX). Về mặt lý thuyết, cũng giống nhau, bởi vì add là một phương thức của tất cả các lớp chung ... Nhưng rất được khuyến khích sử dụng push, bởi vì bạn đang sử dụng stack và nếu bạn sử dụng phương thức "push" thay vì "add ", có thể bạn sẽ hiểu thêm một chút ...