我试图仅将未选中的项目从列表移动到另一个列表中。此外,我想在移动它们之前验证这些项目是否已经在下一个列表中。
这是我到目前为止所拥有的
int sel[] = lstNum1.getSelectedIndices();
for (int i = 0; i < model1.getSize(); i++) {
if(!model1.getElementAt(i).equals(model1.getElementAt(sel[i]).toString())){
model2.addElement(model1.getElementAt(i).toString());
}
}
我试图比较位置上的项目&#34;我&#34;使用selectedArray中的项目,但没有运气。
答案 0 :(得分:1)
AbtPst提供的答案的简单版本:
Set<Integer> keepThese = new HashSet<Integer>();
for (int x : sel) {
keepThese.add(x);
}
for (int i=0 ; i<firstList.size() ; i++) {
if( !keepThese.contains(i)) {
if( !secondList.contains(firstList.get(i))) {
secondList.add(firstList.get(i));
}
}
}
答案 1 :(得分:0)
将你的int [] sel转换为Set。这样可以在添加到新列表之前轻松检查
var data = new Bloodhound({
datumTokenizer: function (datum) {
return Bloodhound.tokenizers.whitespace(datum.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: "api/lookup/posearch/%QUERY",//,
prepare: function (query, settings) {
$("#loadingType").addClass('fa fa-circle-o-notch fa-spin');
settings.url = "api/lookup/posearch/" + query;
return settings;
},
filter: function (m) {
$("#loadingType").removeClass('fa fa-circle-o-notch fa-spin');
// Map the remote source JSON array to a JavaScript object array
return $.map(m, function (d) {
return {
value: d
};
});
}
}
});
// Initialize the Bloodhound suggestion engine
data.initialize();
return data;
现在secondList将包含firstList中不在sel数组中的索引
的所有元素