我正在努力变得更熟悉ArrayList。我想知道如何使用数组列表与tan数组进行等效操作。
heap[hole]=heap[child];
heap[hole]=temp;
heap[hole]=heap[hole/2];
答案 0 :(得分:3)
Java数组和列表之间的直接等效操作是:
list.get(i)
相当于表达式array[i]
list.set(i, v)
相当于语句array[i] = v;
list.size()
相当于表达式array.length
数组和列表的“for each”迭代之间也存在等价关系。
这些等同性适用于所有类型的List
...而不仅仅是ArrayList
。但是对于某些List
实施,位置set
和get
方法很昂贵。
话虽如此,将数组包装为列表(使用Arrays.asList
)只有在需要对数组和列表进行推广时才会这样做。它不适用于原始类型的数组。如果您的数组是什么,并且您的算法需要一个数组(即它不需要更高级别的列表操作,如插入,删除等),最好不要使用List API。
答案 1 :(得分:2)
ArrayList heapList = new ArrayList(Arrays.asList(heap));
heapList.set(hole, heapList.get(child));
heapList.set(hole, temp);
heapList.set(hole, heapList.get(hole/2);