Comparator
, реализованный в классе CompareLastName
, может быть помещен вне класса SortNames
или, по крайней мере, вне класса CelebrityNamesFile
. У меня была такая же проблема, пока я не поместил класс, который реализует мой Компаратор вне моего класса объектов. После того, как я это сделал, программа отлично работала. Вот пример моего кода с комментариями, если он помогает.
// Comparator interface for my Word Class.
public interface Comparator<Word>
{
int compare(Word first, Word second);
}
// Word Class, which is my object.
public class Word
{
private String word;
public Word(String input) { word = input; }
public String get() { return word; }
public int wordSize() { return word.length(); }
}
// Comparator implementation is separate from my Word Class.
public class WordComparator implements Comparator<Word>
{
public int compare(Word first, Word second)
{
if (first.wordSize() < second.wordSize()) { return -1; }
else if (first.wordSize() > second.wordSize()) { return 1; }
else { return first.get().compareTo(second.get()); }
}
}
// Now run the program to ensure the Word Class objects and the WordComparator
// Class are implemented correctly.
public class WordComparatorDemo
{
public static void main(String[] args) throws FileNotFoundException
{
ArrayList<Word> list = new ArrayList<Word>();
JFileChooser find = new JFileChooser();
Scanner read = null;
if(find.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
File selectedFile = find.getSelectedFile();
read = new Scanner(selectedFile);
try
{
list = inputData(read);
// Here's the sort implementing the WordComparator.
Collections.sort(list, new WordComparator());
}
finally { read.close(); }
}
}
public static ArrayList<Word> inputData(Scanner in)
{
ArrayList<Word> list = new ArrayList<Word>();
in.useDelimiter("[^A-Za-z]+");
while(in.hasNext())
{
String word = in.next();
Word temp = new Word(word);
list.add(temp);
}
return list;
}
}
Примечание. Мой ответ через год после оригинального сообщения, но, надеюсь, он поможет любому, кто заходит на этот сайт для получения помощи.
Сначала вам нужно убедиться, что таблица mysql.time_zone_name заполнена. Если он пуст, вы можете заполнить его, следуя инструкциям на этой странице:
http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html
Обычно это как просто запустить такую команду в оболочке:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
После заполнения этой таблицы вы можете использовать функцию CONVERT_TZ () для обновления существующих значений в БД:
http://dev.mysql.com/doc /refman/5.1/en/date-and-time-functions.html#function_convert-tz
Вот два примера, показывающих, как он преобразует дату и время из CET в UTC зимой и летом:
mysql> SELECT CONVERT_TZ('2010-01-22 12:00:00','CET','UTC');
+-----------------------------------------------+
| CONVERT_TZ('2010-01-22 12:00:00','CET','UTC') |
+-----------------------------------------------+
| 2010-01-22 11:00:00 |
+-----------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CONVERT_TZ('2010-07-22 12:00:00','CET','UTC');
+-----------------------------------------------+
| CONVERT_TZ('2010-07-22 12:00:00','CET','UTC') |
+-----------------------------------------------+
| 2010-07-22 10:00:00 |
+-----------------------------------------------+
1 row in set (0.00 sec)