Я сделал функцию, вы можете попробовать это:
function check(array $files){
$collect = [];
foreach($files as $file){
foreach($collect as $record){
if($record === $file) //check code and value or array identical
return true; //return true if match found
}
$collect[] = $file; //collect all array (index and code)till match
//not found
}
return false; //return false if match not found at last
}
$files= Array (
0 => Array (
0 => 1,
1 => '3f'
),
1 => Array (
0 => 2,
1 => '2f'
),
2 => Array (
0 => 2,
1 => '2f'
)
);
var_dump(check($data));
она вернет true, если получит успех
Легкий ответ время "это, и см.".
Другой ответ, "он не будет иметь значения". Это, кажется, микрооптимизация, которая едва стоит усилия. Я думаю, что это попадает в категорию "Печальной Трагедии Театра Микрооптимизации".
Нет для java.util. Карта и java.util. Набор, потому что это интерфейсы, и существует различные реализации.
Для конкретных реализаций это не стоящая оптимизация. Если у Вас есть проблемы с производительностью, выбрал лучшую подходящую реализацию, или заново обдумайте, какой и как необходимо сохранить.
Вставка 5 000 случайных чисел в HashSet берет о миллисекунде на заурядном ноутбуке, поэтому сколько миллионов элементов Вы хотите вставить для создания этого вида из оптимизации стоящим?
Времени вставки для красно-черного дерева (который используется для реализации TreeSet/TreeMap Java) гарантируют, худший случай, чтобы быть O (зарегистрируйте n). Это могло быть быстрее, если объекты будут в особом порядке, но я не уверен, чем это было бы (вероятно, предварительно отсортированный, то будет самым быстрым?).
Вставка в хеш-таблицу является O (1) (постоянное время) операция. Главным, сделанным для вставки, является вычисление хэш-кода.
Править: Starblue предлагает предварительно отсортированный, может привести к производительности худшего случая, таким образом, Вы могли попробовать рандомизированный порядок.
Существует естественно огромная разница между основанными на хеше наборами и основанными на дереве.
Основанные на дереве извлекают выгоду из упорядочивания элемента для вставки (например, сравнения между строками), поэтому когда у Вас есть сопоставимые объекты (как строка), лучше использовать их. TreeSet/TreeMap/etc. в стандартном наборе, как предполагается, сбалансирован (красно-черное дерево), таким образом, порядок вставки не имеет значения так очень. Если бы это не было сбалансировано, то порядок вставки имел бы значение, так как Вы могли закончить с цепочкой вместо дерева.
В хеш-таблицах коэффициент загрузки и хеш-функция решают все, но если Вы имеете дело со строками, можно быть лучше из даже беспокойства хешированием.
При необходимости в ряде строк для многих строк с перекрытиями Trie может быть большей эффективной памятью, но я не думаю, что существует один в библиотеке.
Старайтесь рассмотреть характеристики своей структуры данных при принятии мер по оптимизации. Для одного экстремального примера, вставляя элементы в двоичное дерево в отсортированном порядке привел бы к связанному списку.