我如何迭代一个集/HashSet没有以下?
Iterator iter = set.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
我如何迭代一个集/HashSet没有以下?
Iterator iter = set.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
当前回答
你可以使用一个增强的for循环:
Set<String> set = new HashSet<String>();
//populate set
for (String s : set) {
System.out.println(s);
}
或者使用Java 8:
set.forEach(System.out::println);
其他回答
枚举(?):
Enumeration e = new Vector(set).elements();
while (e.hasMoreElements())
{
System.out.println(e.nextElement());
}
另一种方法(java.util.Collections.enumeration()):
for (Enumeration e1 = Collections.enumeration(set); e1.hasMoreElements();)
{
System.out.println(e1.nextElement());
}
Java 8:
set.forEach(element -> System.out.println(element));
or
set.stream().forEach((elem) -> {
System.out.println(elem);
});
您可以使用函数式操作来获得更简洁的代码
Set<String> set = new HashSet<String>();
set.forEach((s) -> {
System.out.println(s);
});
将集合转换为数组 也可以帮助你迭代元素:
Object[] array = set.toArray();
for(int i=0; i<array.length; i++)
Object o = array[i];
你可以使用一个增强的for循环:
Set<String> set = new HashSet<String>();
//populate set
for (String s : set) {
System.out.println(s);
}
或者使用Java 8:
set.forEach(System.out::println);
然而,对于这个问题已经有了很好的答案。以下是我的回答:
1. set.stream().forEach(System.out::println); // It simply uses stream to display set values
2. set.forEach(System.out::println); // It uses Enhanced forEach to display set values
同样,如果这个集合是自定义类类型,例如:Customer。
Set<Customer> setCust = new HashSet<>();
Customer c1 = new Customer(1, "Hena", 20);
Customer c2 = new Customer(2, "Meena", 24);
Customer c3 = new Customer(3, "Rahul", 30);
setCust.add(c1);
setCust.add(c2);
setCust.add(c3);
setCust.forEach((k) -> System.out.println(k.getId()+" "+k.getName()+" "+k.getAge()));
//客户类:
class Customer{
private int id;
private String name;
private int age;
public Customer(int id,String name,int age){
this.id=id;
this.name=name;
this.age=age;
} // Getter, Setter methods are present.}