我想调用我的Set'set'的第一个元素。此时内容设置= [“1”,“2”] ...当我运行以下代码时,它在iter.next()中返回“2”,是否有可能他首先返回“1” “并在下一个循环中”2“?
//Remove duplicates from array
Set set= new HashSet(Arrays.asList(leveranciers));
Iterator iter = set.iterator();
while (iter.hasNext()) {
//for (Iterator it = set.iterator();it.hasNext();){
PdfPTable table = GetTable(""+ iter.next());
byte[] pdf = wdThis.wdGetAchatsIndirectController().GetPDFFromFolder("/intranetdocuments/docs/AchatsIndirect", table);
wdThis.wdGetAchatsIndirectController().PrintPDF(pdf);
}
答案 0 :(得分:3)
好吧,HashSet
不会保留广告订单。如果您需要,请使用LinkedHashSet
。请使用参数化版本。
答案 1 :(得分:0)
一般来说,Set
中没有“第一个元素”。 set.iterator().next()
将为您提供一个任意元素(如果该集为空,则为null
)。但是,LinkedHashSet
将允许您按照添加到集合中的顺序迭代元素。 TreeSet
将允许您按自然顺序迭代元素(如果它们是Comparable
)。或许你真的想要一个List
?
然而,这不是你想做的吗?
// Assuming it is strings in 'leveranciers' (as implied by set=["1", "2"])
for(String s : Arrays.asList(leveranciers)) {
PdfPTable table = GetTable("" + s);
byte[] pdf = wdThis.wdGetAchatsIndirectController().GetPDFFromFolder("/intranetdocuments/docs/AchatsIndirect", table);
wdThis.wdGetAchatsIndirectController().PrintPDF(pdf);
}
此外,正如Joffrey所述,请添加您的收藏品的通用类型,例如Foo
,Bar
(无论它们可能是什么):
Set<Foo> set = ...
Iterator<Bar> iter = ...