Tôi có một câu hỏi về bộ sưu tập đơn giản. Tôi có một đối tượng Set<String>
. Tôi muốn đếm các chuỗi trong tập hợp đó. Cách sạch nhất/tốt nhất để đi về nó là gì?Java: Enumeration từ Set <String>
Trả lời
EDIT: Không cần phải viết của riêng bạn (mặc dù tôi sẽ để triển khai bên dưới cho hậu thế) - xem câu trả lời của Kevin Bourrillion cho câu trả lời trong JDK.
Nếu bạn thực sự cần một điều tra, có thể có thể sử dụng:
Enumeration<String> x = new Vector(set).elements();
Nó sẽ là tốt hơn để sử dụng Iterable<E>
nếu có thể dù ...
Một lựa chọn tốt hơn là để viết một lớp bao bọc nhỏ xung quanh Iterator<E>
. Bằng cách đó bạn không cần phải có một bản sao chỉ để tìm một imlementation của Enumeration<E>
:
import java.util.*;
class IteratorEnumeration<E> implements Enumeration<E>
{
private final Iterator<E> iterator;
public IteratorEnumeration(Iterator<E> iterator)
{
this.iterator = iterator;
}
public E nextElement() {
return iterator.next();
}
public boolean hasMoreElements() {
return iterator.hasNext();
}
}
public class Test {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
Enumeration<String> x = new IteratorEnumeration<String>(set.iterator());
}
}
@Downvoter: Chăm sóc bình luận? –
Tôi cũng đã bỏ phiếu. Không cần phải viết thực hiện của riêng bạn khi JDK có một phương pháp util tĩnh mà nó cho bạn như được chỉ ra bởi Kevin Bourrillion. – Snekse
@Snekse: Nếu người đánh giá trước đó đã nói nhiều, điều đó sẽ hữu ích. Tôi không thể xóa câu trả lời của tôi ngay bây giờ vì nó là một trong những chấp nhận, nhưng tôi có thể chỉ ra của Kevin ... –
Giả sử bạn có nghĩa là liệt kê theo nghĩa toán học một cách sạch nhất để làm điều này là thông qua một cho vòng lặp, áp dụng đối với bất kỳ lớp mà thực hiện Iterable
:
Set<String> strs = ...
for (String s : strs) {
...
}
Nếu bạn thực sự đòi hỏi một Enumeration
bạn có thể thực hiện một lớp adapter để quấn Iterator
trở bằng cách gọi iterator()
. Có một lớp bộ điều hợp trong thư viện Bộ sưu tập Apache: IteratorEnumeration
.
Hoặc bạn có thể sử dụng thư viện ổi của Google:
Set<String> mySet = ...
Enumeration<String> = Iterators.asEnumeration(mySet.iterator());
Downvoter ...quan tâm để bình luận? – Adamski
java.util.Collections.enumeration(set)
Javadoc
Trả về một liệt kê trong bộ sưu tập xác định. Điều này cung cấp khả năng tương tác với các API cũ yêu cầu điều tra là đầu vào .
Ok, tôi nhận ra câu trả lời của tôi là ngắn gọn, nhưng đó là bởi vì đó là tất cả những gì thực sự cần phải nói. :) Phương thức này nằm trong JDK và * chính xác * những gì mà người đăng yêu cầu. Thật kỳ lạ với tôi rằng nó sẽ được xếp hạng cuối cùng. –
Mục Java hiệu quả 47: Biết và sử dụng các thư viện – Ray
- 1. Enumeration Phạm vi
- 2. Sự khác biệt giữa liệt kê <? mở rộng ZipEntry> và Enumeration <ZipEntry>?
- 3. @OneToMany List <> vs Set <> khác biệt
- 4. Sự khác biệt giữa Java Enumeration và Iterator
- 5. Overriding Scala Enumeration Value
- 6. Scala, Morphia and Enumeration
- 7. Không thể lặp qua Enumeration
- 8. Mapping Set <enum> sử dụng @ElementCollection
- 9. Sự khác nhau giữa .CreateObjectSet <T>, .Set <T> và .CreateQuery <T>?
- 10. ARC Enumeration tài sản Mạnh Lỗi
- 11. Tại sao tôi không thể sử dụng foreach trên Java Enumeration?
- 12. Ngoại lệ GUI Java Swing - Ngoại lệ trong chuỗi "AWT-EventQueue-0" java.util.NoSuchElementException: Vector Enumeration
- 13. Tại sao một diễn viên chung của Danh sách <? mở rộng Set ..> thành Danh sách <Set..> thành công trên Sun JDK 6 nhưng không biên dịch được trên Oracle JDK 7?
- 14. Từ điển Java <Chuỗi, Danh sách <Object>>
- 15. Java Regex để nhận văn bản từ neo HTML (<a> ...</a>) thẻ
- 16. set-car !, set-cdr! unbound trong vợt?
- 17. Xcode: Bắt cảnh báo "chuyển đổi ngầm từ kiểu enumeration UIDeviceOrientation"
- 18. Java <-> C Cầu
- 19. Tìm giá trị cao nhất trong một Enumeration
- 20. Làm cách nào tôi có thể chuyển đổi MultiMap <Integer, Foo> sang Bản đồ <Integer, Set <Foo>> bằng cách sử dụng Ổi?
- 21. .NET Enumeration cho phép dấu phẩy trong trường cuối cùng
- 22. Thêm hai Set [Bất kỳ]
- 23. SimpleStringProperty set() vs. setValue()
- 24. return iterator từ std :: set :: insert() là const?
- 25. Set Popping (Python)
- 26. Tại sao F # Set không triển khai ISet <T>?
- 27. Khuôn khổ thực thể: Khi nào sử dụng Set <>
- 28. Cách tạo Danh sách <string> {get; set;} cho mỗi chủ đề,
- 29. python dict set min_size
- 30. Set thông số stty
Đếm như trong java.util.Enumeration? Bất kỳ lý do nào không sử dụng java.util.Iterable thay thế? –
yes..bởi vì tôi đang ghi đè phương thức trả lại cụ thể một Số đếm. –
Charlotte
Tôi nghĩ bạn nên chấp nhận câu trả lời bình chọn nhiều nhất. –