本文主要用于记录自己在编写mapreduce程序时常用的一些方法,后期会不断更新,用于自己复习和给新手一些帮助。
字符串操作
String str = " 12345";
// 字符串中是否包含某子字符串System.out.println(str.contains("123"));// 返回索引位置System.out.println(str.indexOf("1"));// 截取字符串,从索引0开始到索引3(包括前不包括后) 只有一个参数时表示从该索引一直截取到最后String str2 = str.substring(0, 3);System.out.println(str2);// 截取第一个逗号以前的字符串String str1 = "1,2,3,4,5";String substring = str1.substring(0, str1.indexOf(","));System.out.println(substring);// 字符串替换System.out.println(str.replace("123", "321"));// trim()去除字符串两边的空格 ltrim()去除左边的空格 rtrim()去除右边的空格System.out.println(str.trim());// ==比较的是2个字符串是否指向同一地址,equals()比较的是实际字符串,比如大小写,长度等
字符串数组操作
// 将字符串数组转化成字符串 import org.apache.commons.lang.StringUtils;String[] array = {"abc", "123", "45"}; System.out.println(StringUtils.join(array,','));//字符串按,或;分割成数组String str = "abc,def;gh,ij;k;lm,no,p;qr,st";String[] temp = str.split("[,;]");
// Arrays.toString()方法,数组输出为字符串 格式[abc, def, gh, ij, k, lm, no, p, qr, st]System.out.println(Arrays.toString(temp));// 字符串数组的截取String[] a = {"a","b","c","d","e","f","g","h","i"};//包括前不包括后String[] b = Arrays.copyOfRange(a, 0, 5);System.out.println(StringUtils.join(b,","));
StringBuilder操作
// String 是不可变的对象,经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响
// StringBuilder线程不安全的(用在字符串缓冲区被单个线程使用的时候) 优先考虑使用,速度快
// StringBuffer线程安全的(用于多线程)
// StringBuilder sb = new StringBuilder();
// 在最后追加
// sb.append(1);
// sb.append(2);
// 在索引位置前插入
// sb.insert(1, "a");
// 删除指定索引位置的字符 删除最后一个字符
// sb.deleteCharAt(sb.length()-1);
// 删除指定索引的字符串,包括前不包括后
// sb.delete(0, 1);
// System.out.println(sb.toString());
输出文件中文乱码问题
mapreduce处理的文字格式都是utf-8,如果输入的正文编码格式是gbk,可以自定义方法,将其转为utf-8// 处理gbk格式的输入文件 Text text1 = transformTextToUTF8(value, "gbk");public static Text transformTextToUTF8(Text text, String encoding) {String value = null;try {value = new String(text.getBytes(), 0, text.getLength(), encoding);} catch (UnsupportedEncodingException e) {e.printStackTrace();}return new Text(value);}