当前位置: 首页 > 知识库问答 >
问题:

如何在没有迭代器的情况下迭代集/哈希集?

彭海阳
2023-03-14

如果没有以下内容,我如何迭代/哈希集

Iterator iter = set.iterator();
while (iter.hasNext()) {
    System.out.println(iter.next());
}

共有3个答案

何浩荡
2023-03-14

集合转换为数组也可以帮助您迭代元素:

Object[] array = set.toArray();

for(int i=0; i<array.length; i++)
   Object o = array[i];
史良哲
2023-03-14

至少还有六种方法可以迭代一个集合。我知道以下几点:

方法1

// Obsolete Collection
Enumeration e = new Vector(movies).elements();
while (e.hasMoreElements()) {
  System.out.println(e.nextElement());
}

方法2

for (String movie : movies) {
  System.out.println(movie);
}

方法3

String[] movieArray = movies.toArray(new String[movies.size()]);
for (int i = 0; i < movieArray.length; i++) {
  System.out.println(movieArray[i]);
}

方法四

// Supported in Java 8 and above
movies.stream().forEach((movie) -> {
  System.out.println(movie);
});

方法5

// Supported in Java 8 and above
movies.stream().forEach(movie -> System.out.println(movie));

方法六

// Supported in Java 8 and above
movies.stream().forEach(System.out::println);

这是我用于示例的HashSet

Set<String> movies = new HashSet<>();
movies.add("Avatar");
movies.add("The Lord of the Rings");
movies.add("Titanic");
子车征
2023-03-14

可以使用增强的for循环:

Set<String> set = new HashSet<String>();

//populate set

for (String s : set) {
    System.out.println(s);
}

或使用Java 8:

set.forEach(System.out::println);
 类似资料:
  • 问题内容: 我正在尝试使用pyodbc处理一个非常大的查询,我需要遍历所有行,而不必使用fetchall()一次加载所有行。 是否有一个良好且有原则的方法来做到这一点? 问题答案: 当然,请使用循环。 http://code.google.com/p/pyodbc/wiki/Cursor#fetchone

  • 我正在使用Azure Blob storage .Net client library v11。 我的azure blob容器有超过2000万个文件。列出blob并获取每个blob的大小是一项非常耗时的操作。 寻找直接获取blob容器大小的方法。

  • 假设我们有一个冲突,但键值不同,因此根据定义,Hashmap将在该桶中创建一个链表,并将新的键值对添加为现有键值条目的下一个。 我的问题是在这种情况下我们如何迭代哈希图?默认迭代机制是否更改为实际检索所有冲突并存储在同一存储桶位置的键值对?

  • 在我的应用程序中,我需要数组1的给定大小k的所有子集。。n 这可以使用递归方法轻松完成,并存储沿途找到的所有子集。然而,我不希望我的应用程序使用指数级的内存量[O(n^k)]。 因此,我想编写一个实现(Java)的类来迭代所述子集。 所以我可以如下使用它: 显然,我们需要存储最后返回的当前子集,它被初始化为1... k。但是如何从这个当前子集计算下一个子集呢?

  • 本文向大家介绍c++迭代器失效的情况汇总,包括了c++迭代器失效的情况汇总的使用技巧和注意事项,需要的朋友参考一下 一、序列式容器(数组式容器) 对于序列式容器(如vector,deque),序列式容器就是数组式容器,删除当前的iterator会使后面所有元素的iterator都失效。这是因为vetor,deque使用了连续分配的内存,删除一个元素导致后面所有的元素会向前移动一个位置。所以不能使用

  • 我想迭代嵌套在映射中的列表,数据结构如下所示: Freemarker模板: 详细异常消息: FreeMarker模板错误:“...[...]”左操作数:需要序列或字符串或自动转换为字符串的东西(数字、日期或布尔值),但计算结果为extended_hash(包装器:f.t.simplehash):==>groups 那么,问题出在哪里呢? 附言。 我尝试了而不是,它会抛出一个新的异常堆栈: