【问题标题】:iterate over a set and create a string containing HTML遍历一个集合并创建一个包含 HTML 的字符串
【发布时间】:2012-08-18 18:41:25
【问题描述】:

我在图片库生成程序Jalbum 中使用了以下代码来生成用于库中图片的所有关键字。

Set allKeywords = new HashSet();
for (AlbumObject ao : currentObjects) {
   XmpManager mgr = ao.getXmpManager();
   if (mgr != null) {
      allKeywords.addAll(mgr.getKeywordSet());
   }
}
//get the Iterator
Iterator itr = allKeywords.iterator(); 
while(itr.hasNext())
   out.println(itr.next());

我的问题是何时 out.print:

out.println(itr.next());

如何将 html 添加到每个单独的关键字?我基本上是想排版:

<a href="#">keyword</a>

我是这个领域的新手,所以请温柔!

【问题讨论】:

  • out.println("&lt;a href=\"#\"&gt;" + itr.next() + "&lt;/a&gt;");

标签: java iterator hashset


【解决方案1】:
out.println("<a href=\"#\">" + itr.next() + "</a>");

如果你想拨打iterator.next()两次

out.println("<a href=\"#\" class=\"label list2\""
                + " data-filter=\"" + "." + itr.next() + "\">"
                + (itr.hasNext() ? itr.next() : "") + "</a>");

对于您的要求,我希望 mgr.getKeywordSet() 返回字符串

  String str = itr.next();
  System.out.println("<a href=\"#\" class=\"label list2\""
                + " data-filter=\"" + "." + str + "\">" + str + "</a>");

【讨论】:

  • itr.next() 可以使用两次吗?我尝试时遇到错误。我想做这样的事情来添加数据属性。 out.println("" + itr .next() + "");
  • hasNext() 在调用next() 之前检查很重要,否则下一个方法会抛出NoSuchElementExecption 是否没有元素并且调用next()
  • 对不起,我是新手,不太明白我该怎么做。
  • 感谢您的帮助。您编辑的代码有效,除了如果我有 7 个关键字,它只显示其中 4 个,最后一个不显示链接的文本。我正在玩你这么好心给我的代码,但我虚弱的头脑仍然没有运气。
  • 好的,现在我想我已经得到了你的要求。更新答案。
猜你喜欢
  • 1970-01-01
  • 2011-02-17
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多