Мы можем отсортировать список одним из двух способов:
1. Использование компаратора: когда требуется использовать логику сортировки в нескольких местах. Если вы хотите использовать логику сортировки в одном месте, вы можете написать анонимный внутренний класс следующим образом или извлечь из компаратора и использовать его в нескольких местах
Collections.sort(arrayList, new Comparator<ActiveAlarm>() {
public int compare(ActiveAlarm o1, ActiveAlarm o2) {
//Sorts by 'TimeStarted' property
return o1.getTimeStarted()<o2.getTimeStarted()?-1:o1.getTimeStarted()>o2.getTimeStarted()?1:doSecodaryOrderSort(o1,o2);
}
//If 'TimeStarted' property is equal sorts by 'TimeEnded' property
public int doSecodaryOrderSort(ActiveAlarm o1,ActiveAlarm o2) {
return o1.getTimeEnded()<o2.getTimeEnded()?-1:o1.getTimeEnded()>o2.getTimeEnded()?1:0;
}
});
Мы можем иметь нулевую проверку свойств, если бы мы могли использовать «Long» вместо «long».
2. Использование Comparable (естественный порядок): если алгоритм сортировки всегда придерживается одного свойства: напишите класс, который реализует метод «Comparable» и переопределяет метод «compareTo», как определено ниже
class ActiveAlarm implements Comparable<ActiveAlarm>{
public long timeStarted;
public long timeEnded;
private String name = "";
private String description = "";
private String event;
private boolean live = false;
public ActiveAlarm(long timeStarted,long timeEnded) {
this.timeStarted=timeStarted;
this.timeEnded=timeEnded;
}
public long getTimeStarted() {
return timeStarted;
}
public long getTimeEnded() {
return timeEnded;
}
public int compareTo(ActiveAlarm o) {
return timeStarted<o.getTimeStarted()?-1:timeStarted>o.getTimeStarted()?1:doSecodaryOrderSort(o);
}
public int doSecodaryOrderSort(ActiveAlarm o) {
return timeEnded<o.getTimeEnded()?-1:timeEnded>o.getTimeEnded()?1:0;
}
}
метод сортировки вызовов для сортировки на основе естественного упорядочения
Collections.sort(list);
Если вы хотите получить отрицательную доброту, я бы сделал следующее: sudo nohup nice command потому что согласно `info coreutils` nohup должен предшествовать nice. Если я хочу получить отрицательное значение nice, то sudo должен предшествовать, так как только root может использовать отрицательные значения nice.
Если нужно положительное значение nice, я бы поступил просто: nohup nice sudo command Это гарантирует, что nohup и nice не будут запущены с привилегиями root.
sudo должен пойти в последний раз так, чтобы nohup и хороший не работали с полномочиями пользователя root.
так последний
~ $ sudo nohup nice whoami
nohup: ignoring input and appending output to `nohup.out'
~ $ sudo cat nohup.out
root
различие между первым и вторым способом, которым Вы сделали это, - то, кто владеет nohup.out файлом. sudo
первый сделает принадлежавшим корню, nohup
, прежде чем sudo сделает принадлежавшим Вашему пользователю.
Я предполагаю, что все они делают должностное лицо* syscall для передавания мяча следующему, таким образом, безотносительно порядка он не оставит процессов зависания.
я сказал бы, что nohup должен быть последним так, чтобы два другой не делали clober обработчик сигналов. (Я уверен хороший, не играет с сигналами, но sudo делает.)
Затем sudo и хороший, все это зависит, на котором пути Вы хотите изменить приоритет планирования с хорошим.
sudo может не уважать любезность. По крайней мере, на моей машине (Ubuntu 9.04) этого нет. Выполнение этого:
nice sudo nice
sudo nice nice
выводит 0 и 10. (Обратите внимание, что "nice" без команды распечатывает текущее удобство.)