假设以下内容:
String example = "something";
String firstLetter = "";
以下分配方式firstLetter
可能会影响性能,请注意是否存在差异; 哪个最好,为什么?
firstLetter = String.valueOf(example.charAt(0));
firstLetter = Character.toString(example.charAt(0));
firstLetter = example.substring(0, 1);
返回第一个字母为a的原因String
是它正在Hadoop中运行,并且需要一个字符串来分配给一个Text
类型,firstLetter
它将key
从map()
方法中以a
形式输出,例如:
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);
}
}
}
}
substring(0, 1)
通过执行以下操作,可以发现性能更好:
String example = "something";
String firstLetter = "";
long l=System.nanoTime();
firstLetter = String.valueOf(example.charAt(0));
System.out.println("String.valueOf: "+ (System.nanoTime()-l));
l=System.nanoTime();
firstLetter = Character.toString(example.charAt(0));
System.out.println("Character.toString: "+ (System.nanoTime()-l));
l=System.nanoTime();
firstLetter = example.substring(0, 1);
System.out.println("substring: "+ (System.nanoTime()-l));
输出:
String.valueOf: 38553
Character.toString: 30451
substring: 8660
问题内容: 尝试编写一个简短的方法,以便我可以解析一个字符串并提取第一个单词。我一直在寻找做到这一点的最佳方法。 我假设我会使用,但是我想只从字符串中获取第一个单词,并将其保存在一个变量中,并将其余标记放在另一个变量中。 有一个简洁的方法吗? 问题答案: 方法的第二个参数是可选的,如果指定该参数,则只会将目标字符串分割几次。 例如: 或者,您可以使用String方法。
问题内容: 我正在寻找一个php函数,该函数将接受一个输入字符串,并通过去除所有仅保留字母数字的特殊字符来返回其净化版本。 我需要另一个功能相同但仅返回字母字符AZ的函数。 任何帮助,不胜感激。 问题答案: 警告:请注意,英语不仅限于AZ。 尝试执行以下操作删除az,AZ和0-9以外的所有内容: 如果字母数字的定义包括外语字母和过时的脚本,则您将需要使用Unicode字符类。 尝试以下操作仅保留A
问题内容: 检查字符串是否仅包含字母数字字符的最快方法是什么。 我有一些代码会占用大量CPU,我想知道是否有比使用预编译正则表达式更快的方法。 问题答案: 我已经编写了使用正则表达式(根据其他答案)与不使用正则表达式进行比较的测试。在运行Java 1.6的四核OSX10.8计算机上进行的测试 有趣的是,使用正则表达式比手动迭代字符串要慢5到10倍。此外,该功能比的速度略快。一种支持允许扩展Unic
问题内容: 我正在和熊猫打架,现在我正在失去。我有与此类似的源表: 我想从列“ First”中的值的第一位开始向该数据帧添加新列:a)从列“ First”中的字符串更改为数字b)从新创建的字符串中提取第一个字符c)来自b的结果另存为新的数据框中的列 我不知道如何将其应用于熊猫数据框对象。我将非常感谢您的帮助。 问题答案: 铸山坳来,你可以进行矢量化切片呼吁: 如果需要,可以再次调用列
问题内容: 我在尝试搜索字符串中的子字符串时遇到问题。该子字符串可能在字符串中也可能不在字符串中。 我知道是否可以完成的两种方法是: 正则表达式 但是,还有其他“优化”方式吗?你会怎么做? Ruby可以提供更好的答案吗?由于我们使用jRuby,因此答案可以是Ruby或Java。 问题答案: 在Ruby中,使用方法: 返回。
我想删除字符串末尾的所有数字和符号。得到: 我可以剥离数字,但不能剥离。我该怎么做? 这是我到目前为止的代码: