Java 如何从LinkedHashSet获取前5个值?
我有一个LinkedHashSet,它包含多个值Java 如何从LinkedHashSet获取前5个值?,java,android,arrays,for-loop,linkedhashset,Java,Android,Arrays,For Loop,Linkedhashset,我有一个LinkedHashSet,它包含多个值 LinkedHashSet<String> lhs = new LinkedHashSet<String>(); 这将输出LinkedHashSet中存储的所有值。我应该对代码进行哪些修改,以便只从集合中获取前5个值 您可以获取集合迭代器 Iterator<String> it = yourSet.iterator(); 如果您有java8,那么我会建议如下: yourLinkedHashSet .
LinkedHashSet<String> lhs = new LinkedHashSet<String>();
这将输出LinkedHashSet中存储的所有值。我应该对代码进行哪些修改,以便只从集合中获取前5个值 您可以获取集合
迭代器
Iterator<String> it = yourSet.iterator();
如果您有java8,那么我会建议如下:
yourLinkedHashSet
.stream()
.limit(5)
.forEachOrdered(text::append);
说明:
stream()
将从集合中获取一个又一个字符串
limit(5)
将在处理五个元素后停止计算
forEachOrdered(…)
对每个项目逐个执行操作
text::append
是每个项目要执行的操作
您可以使用子列表而无需计数器声明
Iterator<String> iter = new ArrayList<>(lhs).subList(5, lhs.size())
.iterator();
while (iter.hasNext()) {
text.append(iter.next());
}
迭代器iter=newarraylist(lhs).subList(5,lhs.size())
.iterator();
while(iter.hasNext()){
text.append(iter.next());
}
5次迭代后(由int
variable控制)中断循环如何?这取决于您使用的Java版本。。。对于Java7,这个解决方案将与Java8+的解决方案大不相同。另外,你说你想要5个第一个值:在什么?一个集合,一个数组?@fge安卓使用Java7@Mussa不,没有。据我所知,Android仍然没有任何可行的JSR203或JSR292实现。您能定义“值”吗?你.append()
到一些文本
中,但甚至不知道这文本
是什么……我会把它变成for
循环。@Arrvi-Meh,这真的是一个意见问题。@Arrvi为什么?这最终对最终结果没有影响。呃,for
循环的实际上只是在循环时说a的一种奇特方式PIt“隐藏”计数器变量。非常感谢,它工作得非常好。这正是我试图找出的解决方案的类型。@编码器,如果输入集的元素少于您等待的元素,会发生什么?@fge它仍然可以工作,因为只有当它大于4时它才会停止。@fge如果我大于4或lhs没有项目,它就会停止
int i = 0;
for (String sentences : lhs) {
if (i > 4) break;
text.append(sentences);
i++;
}
yourLinkedHashSet
.stream()
.limit(5)
.forEachOrdered(text::append);
Iterator<String> iter = new ArrayList<>(lhs).subList(5, lhs.size())
.iterator();
while (iter.hasNext()) {
text.append(iter.next());
}