Предположим следующее:
String example = "something";
String firstLetter = "";
Есть ли различия, которые следует учитывать со следующими способами назначения firstLetter
, которые могут повлиять на производительность; , что было бы лучше, и почему?
firstLetter = String.valueOf(example.charAt(0));
firstLetter = Character.toString(example.charAt(0));
firstLetter = example.substring(0, 1);
Причина, по которой первая буква возвращается как String
, заключается в том, что она выполняется в Hadoop, и требуется строка для назначения типу Text
, firstLetter
будет выводиться как key
из метода map()
, например:
public class FirstLetterMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
String line = new String();
Text firstLetter = new Text();
IntWritable wordLength = new IntWritable();
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
line = value.toString();
for (String word : line.split("\\W+")){
if (word.length() > 0) {
// ---------------------------------------------
// firstLetter assignment
firstLetter.set(String.valueOf(word.charAt(0)).toLowerCase());
// ---------------------------------------------
wordLength.set(word.length());
context.write(firstLetter, wordLength);
}
}
}
}