这是一段看似非常特殊的C++代码.出于某种奇怪的原因,奇迹般地对数据进行排序使得代码几乎快了六倍.
#include <algorithm>
#include <ctime>
#include <iostream>
int main()
{
// Generate data
const unsigned arraySize = 32768;
int data[arraySize];
for (unsigned c = 0; c < arraySize; ++c)
data[c] = std::rand() % 256;
// !!! With this, the next loop runs faster.
std::sort(data, data + arraySize);
// Test
clock_t start = clock();
long long sum = 0;
for (unsigned i = 0; i < 100000; ++i)
{
// Primary loop
for (unsigned c = 0; c < arraySize; ++c) …Run Code Online (Sandbox Code Playgroud) 我有一个巨大的数据集,我将其存储到一个集合中,需要找到那里有没有重复.
数据大小可能超过100万.我知道我可以在ArrayListcomapre中存储更多元素Map.
我的问题是:
Map比搜索排序更快ArrayList?HashMap是否比TreeMap?n元素所需的空间方面,这在a TreeMap和HashMap实现之间会更有效吗?我想知道是否有适合“快速”获取(按索引)和“快速”删除的java接口。“快速”是指比更好O(n)。
编辑:只有从集合中随机选择一个元素时才需要get方法。另外,标题应该说“收藏”而不是“界面”。