嘿,我有两个类型对象列表。我想遍历这两个列表并找到具有相同属性的对象,即文件夹路径,以便我可以组合它们都具有的另一个属性。现在,我正在使用2 for循环并检查内循环中的匹配,这是有效的。但我的问题是有更有效的方法吗?感谢
for(int z = 0; z < pList.size(); z++)
{
for(int c = 0; c < eList.size(); c++)
{
if(pList.get(z).path.equals(eList.get(c).path))
{
Pair rank = new Pair();
rank.k = z + c / 2.0;
rank.path = pList.get(z).path;
pcList.add(rank);
}
}
}
答案 0 :(得分:2)
我不认为如果你想检查每个元素还有另一种方法
顺便说一下,您应该更改命名约定,以便我们了解您的列表包含的内容。清洁代码簿是你的朋友;)
答案 1 :(得分:2)
最好的选择是遍历第一个列表,并将所有路径放在一个Set中。然后,当迭代第二个列表时,只需检查您的集合中是否有此路径。
你应该大幅减少手术次数。您的代码应如下所示:
$('.jcarousel-pagination')
.on('jcarouselpagination:active', 'a', function () {
$(this).addClass('active');
})
.on('jcarouselpagination:inactive', 'a', function () {
$(this).removeClass('active');
})
.on('click', function (e) {
e.preventDefault();
})
.jcarouselPagination({
perPage: 1,
item: function (page) {
return '<a href="#' + page + '">' + page + '</a>';
}
});
$('.carousel-control.left').jcarouselControl({
target: '-=1'
});
$('.carousel-control.right').jcarouselControl({
target: '+=1'
});
$('.carousel-control, .jcarousel-pagination').click(function () {
$('.jcarousel').jcarouselAutoscroll('stop');
});
});
$(function () {
$('#first.jcarousel')
.jcarousel({})
.jcarouselAutoscroll({
interval: 10000,
target: '+=1',
autostart: true
});
});
$(document).ready(function () {
$('#carouselcontain').click(function () {
interval: false;
});
<div id="ContentPlaceHolder_ctl00_carouselcontain" class="carouselcontain">
<div id="first" class="jcarousel" data-jcarousel="true">
<ul class="carousel-images">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<div class="jcarousel-pagination" data-jcarouselpagination="true"></div>
</div>
<!-- Left and right controls -->
<a class="left carousel-control" href="#carouselcontain" role="button" data-slide="prev">
<i class="fa fa-angle-left" ></i>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carouselcontain" role="button" data-slide="next">
<i class="fa fa-angle-right"></i>
<span class="sr-only">Next</span>
</a>
</div>
答案 2 :(得分:1)
您应该使用Map<String,P>
并一次性记录其中的所有P
。
for (int z = 0; z < pList.size(); z++) {
map.put(pList.get(z).path, pList.get(z));
}
然后浏览你的eList,在地图中查找路径以获取与之关联的pList条目。
for (int c = 0; c < eList.size(); c++) {
P p = map.get(eList.get(c).path);
if ( p != null ) {
Pair rank = new Pair();
rank.k = z + c / 2.0;
rank.path = p.path;
pcList.add(rank);
}
}