如何在不覆盖它的情况下将整数插入ArrayList中的HashSet?
出于某种原因,该方法使用userInput
值而不是ArrayList index
中的HashSet更新我的ArrayList中的所有 HashSet。
方法的一部分:
case 15:
System.out.println("\n=== ArrayList Test ===\n");
ArrayListOfHashSet arrayList = new ArrayListOfHashSet();
// System.out.println("Enter size of ArrayList of HashSet: ");
// int size = scanner.nextInt();
ArrayList<HashSet<Integer>> arrayListOfHashSet = new ArrayList<HashSet<Integer>>(81);
HashSet<Integer> sets = new HashSet<Integer>();
for (int i = 0; i < 81; i++) {
arrayListOfHashSet.add(sets);
}
do {
System.out.println("1. insert value to ArrayList node");
System.out.println("2. remove value from ArrayList node");
System.out.println("3. empty");
System.out.println("4. print");
int choice = scanner.nextInt();
switch (choice) {
case 1:
arrayList.insert(scanner, arrayListOfHashSet);
break;
case 2:
arrayList.remove(scanner, arrayListOfHashSet);
break;
case 3:
arrayList.empty(scanner, arrayListOfHashSet);
break;
case 4:
System.out.println(Arrays.toString(arrayListOfHashSet.toArray()));
break;
}
System.out.println("\nDo you want to continue? (y or n) \n");
c = scanner.next().charAt(0);
} while ((c == 'Y' || c == 'y') && (c != 'N' || c != 'n'));
break;
我的插入方法:
public void insert(Scanner scanner, ArrayList<HashSet<Integer>> arrayListOfHashSet) {
System.out.print("Please enter an index: ");
int index = scanner.nextInt();
HashSet<Integer> hashSet = arrayListOfHashSet.get(index);
System.out.print("Please enter a value: ");
int userInput = scanner.nextInt();
hashSet.add(userInput);
arrayListOfHashSet.set(index, hashSet);
}
答案 0 :(得分:0)
function convertXML(xml, textStatus, jqxhr) {
var xmlObj = xmlToJson(jqxhr.responseXML)
.query.results.WMS_Capabilities;
console.log("convertXML");
if (typeof xmlObj != 'undefined') {
createData(xmlObj);
}
}
function createData(xmlObj){
for (var i = 0; i < xmlObj.Capability.Layer.Layer.length; i++){
var row = xmlObj.Capability.Layer.Layer[i];
WMSLayers.push(row);
};
console.log("createdata",WMSLayers)
finish();
}
$.get("/path/to/resource", convertXML, "xml")
.fail(function(jqxhr, textStatus, errorThrown) {
console.log(errorThrown)
});
您将HashSet的相同实例添加到arrayList的所有索引。由于这是一个引用,它与所有索引中的哈希值相同。
您必须将 HashSet<Integer> sets = new HashSet<Integer>();
for (int i = 0; i < 81; i++) {
arrayListOfHashSet.add(sets);
}
更改为arrayListOfHashSet.add(sets);