Удаление дубликатов из большого целочисленного массива с помощью Java

Знаете ли вы какой-либо эффективный способ удаления повторяющихся значений из очень большого целочисленного массива с помощью Java? Размер массива зависит от вошедшего в систему пользователя, но всегда будет превышать 1500000 несортированных значений с некоторыми дубликатами. Каждое целое число содержит число от 100000 до 9999999.

Я попытался преобразовать его в список, но куча на моем сервере не позволяет передавать такое количество данных (мой интернет-провайдер ограничил его). А вычисление обычного цикла for внутри цикла for занимает более 5 минут. Выражение > exp2 = x => x.mesID == 1; теперь мне нужно передать exp1 в _db ....

пусть будет:

Expression<Func<Message, bool>> exp1 = x => x.mesID == 1;
Expression<Func<MessageDTO, bool>> exp2 = x => x.mesID == 1;

теперь мне нужно передать exp1 в _db.Messages.where (exp1); проблема в том, что у меня есть только exp2 , мне нужно преобразовать тип в сообщение, все свойства такие же!

теперь я делаю следующее:

  var par = Expression.Parameter(typeof(Message));
  var ex = (Expression<Func<Message, bool>>)Expression.Lambda(exp2.Body, par);

проблема в том, что входной параметр изменяется да! но x внутри тела лямбда-выражения "x.mesID" относится к старому типу.

Любой способ изменить тип всех параметров в теле или изменить входной параметр в другом месте, он тоже отражает тело?

] Думаю, это большая проблема, с которой я всегда сталкиваюсь с LINQ, поскольку между слоями я не могу передавать сгенерированные классы, так как это приведет к объединению слоев, поэтому мне нужно сделать классы с легким весом, теперь как мне использовать такой метод, как _db. Messages.where (); из служебного слоя? !! в то время как слой busniess ничего не знает о типе сообщения, он знает только MessageDTO.

11
задан abatishchev 9 December 2016 в 22:18
поделиться