У меня есть массив объектов, которые я хочу отсортировать по двум ключам. Объекты, которые, поскольку позволяет, говорят, имеют Студента типа и свойства, что я заинтересован для моего вида, класс и имя.
Student
{
double grade;
string name;
...
}
Как я могу отсортировать объекты сначала по классу и затем по имени? так, например, если у меня есть список: Tom 9.9 Andrew 9.8 Chriestie 10 Mat 9.8 Allison 10 Ada 9.8
После вида я должен иметь: Allison 10 Christie 10 Tom 9.9 Ada 9.8 Andrew 9.8 Mat 9.8
И не Christie 10 Allison 10 Tom 9.9 Andrew 9.8 Ada 9.8 Mat 9.8
любой указатель действительно полезен.
Использование JDBC невозможно, так как он не поддерживает. Обойти можно, включив iBatis iBATIS является рамка сохранения и вызвать конструктор Scriptrunner
, как показано в документации iBatis .
Нехорошо включать тяжелую рамку устойчивости, такую как ibatis, чтобы запускать простые sql-скрипты любыми способами, которые можно сделать с помощью командной строки
$ mysql -u root -p db_name < test.sql
-121--1281094- Я не знаю, какую платформу или язык вы используете - Но на платформе .Net есть проект Microsoft Research под названием Chess , который выглядит очень многообещающим, чтобы помочь тем из нас, кто делает многопоточные компоненты, в том числе без блокировки.
Я не использовал его огромное количество, ум.
Это работает (грубое объяснение) путем явного перемежения потоков максимально жесткими способами, чтобы фактически вытеснить ваши ошибки в дикую природу. Он также анализирует код, чтобы найти общие ошибки и плохие узоры - аналогично анализу кода.
В прошлом я также создал специальные версии рассматриваемого кода (через # if blocks и т.д.), которые добавляют дополнительную информацию отслеживания состояния; счетчики, версии и т.д., в которые я могу затем погружаться в рамках единичного теста.
Проблема в том, что для написания кода требуется гораздо больше времени, и вы не всегда можете добавить такие вещи без изменения базовой структуры кода, который уже есть.
-121--1529886-Я довольно блеск на моих объективных знаниях, но есть несколько хороших указателей здесь и всегда есть документация . Вот моя трещина...
NSSortDescriptor *gradeSorter = [[NSSortDescriptor alloc] initWithKey:@"grade" ascending:YES];
NSSortDescriptor *nameSorter = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[personList sortUsingDescriptors:[NSArray arrayWithObjects:gradeSorter, nameSorter, nil]];
Вам необходимо реализовать собственный компаратор и использовать один из методов сортировки NSArray
(например, sortedArrayUsingSelector:
)
-(NSComparisonResult)compare:(Student *)student {
// sort by name
int nameComp = [name compare:student.name];
if (nameComp != NSOrderedSame) return nameComp;
// reverse ordered as desired in the question
if (grade > student.grade)
return NSOrderedAscending;
else if (grade == student.grade) // watchout here
return NSOrderedSame;
else
return NSOrderedDescending;
}
NSArray *unsrtedArray = ...
NSArray *sortedArray = [unsortedArray sortedArrayUsingSelector:@selector(compare:)];