public class EmojiMapper { private static Map<String, Integer> emojiMap; private static List<EmojiData> emojiDataList = new ArrayList<>(); static { emojiMap = new HashMap<>(); emojiMap.put("[:酷]", R.mipmap.icon_1); emojiMap.put("[:无语]", R.mipmap.icon_2); emojiMap.put("[:怒]", R.mipmap.icon_3); emojiMap.put("[:哈]", R.mipmap.icon_4); emojiMap.put("[:笑]", R.mipmap.icon_5); emojiMap.put("[:狡诈]", R.mipmap.icon_6); emojiMap.put("[:冷酷]", R.mipmap.icon_7); emojiMap.put("[:微笑]", R.mipmap.icon_8); emojiMap.put("[:自信]", R.mipmap.icon_9); emojiMap.put("[:尴尬]", R.mipmap.icon_10); emojiMap.put("[:大哭]", R.mipmap.icon_11); emojiMap.put("[:无语]", R.mipmap.icon_12); emojiMap.put("[:晕了]", R.mipmap.icon_13); emojiMap.put("[:晕死]", R.mipmap.icon_14); emojiMap.put("[:生气]", R.mipmap.icon_15); emojiMap.put("[:死了]", R.mipmap.icon_16); emojiMap.put("[:死亡]", R.mipmap.icon_17); emojiMap.put("[:白眼]", R.mipmap.icon_18); emojiMap.put("[:口罩]", R.mipmap.icon_19); emojiMap.put("[:龇牙]", R.mipmap.icon_20); emojiMap.put("[:刘海]", R.mipmap.icon_21); emojiMap.put("[:刘海2]", R.mipmap.icon_22); emojiMap.put("[:刘海3]", R.mipmap.icon_23); emojiMap.put("[:飞吻]", R.mipmap.icon_24); emojiMap.put("[:飞吻2]", R.mipmap.icon_25); emojiMap.put("[:大胡子]", R.mipmap.icon_26); }
时间: 2024-03-11 09:44:54 浏览: 62
这段代码定义了一个 EmojiMapper 类,其中包括一个静态的 emojiMap 对象和一个静态的 emojiDataList 集合。在静态代码块中,将多个表情符号和对应的图片资源 ID 添加到 emojiMap 对象中。这个类可能是用来实现文本中表情符号自动转换为对应的图片资源的功能,也可能是用于其他需要使用表情符号的场景。emojiDataList 集合可能是用于存储更多与表情相关的数据,例如表情的名称、描述、使用次数等等。
相关问题
public class EmojiMapper { private static Map<String, Integer> emojiMap;//静态的 emojiMap 对象 private static List<EmojiData> emojiDataList = new ArrayList<>();//静态的 emojiDataList 集合 static {//静态,将多个表情符号和对应的图片资源 ID 添加到 emojiMap 对象中
这段代码是一个 EmojiMapper 类的声明。该类用于将表情符号与对应的图片资源 ID 进行映射,并提供一个获取 EmojiData 对象的方法。其中,类中包括两个静态成员变量:emojiMap 和 emojiDataList。
emojiMap 是一个静态的 Map<String, Integer> 对象,用于将多个表情符号和对应的图片资源 ID 进行映射。通过静态代码块,将多个表情符号和对应的图片资源 ID 添加到 emojiMap 对象中。
emojiDataList 是一个静态的 List<EmojiData> 集合,用于保存所有的 EmojiData 对象。EmojiData 对象包含表情符号和对应的图片资源 ID。
EmojiMapper 类中还提供了一个静态方法 getEmojiDataList(),用于获取所有的 EmojiData 对象。在该方法中,遍历 emojiMap 对象,根据每个表情符号获取对应的图片资源 ID,并将其与表情符号一起封装成 EmojiData 对象,然后添加到 emojiDataList 集合中。最后返回 emojiDataList 集合。
public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private Map<String, Integer> counts = new HashMap<>(); @Override protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable value : values) { sum += value.get(); } counts.put(key.toString(), sum); } @Override protected void cleanup(Context context) throws IOException, InterruptedException { // 对 counts 中的键值对按照要求排序 List<Map.Entry<String, Integer>> list = new ArrayList<>(counts.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { if (o1.getValue() .equals(o2.getValue()) ) { return o2.getKey().compareTo(o1.getKey()); } else { return o2.getValue().compareTo(o1.getValue()); } } }); // 将排序后的结果写入输出文件中 for (Map.Entry<String, Integer> entry : list) { Text word = new Text(entry.getKey()); IntWritable count = new IntWritable(entry.getValue()); context.write(word, count); } } }分析一下这段代码
这段代码是一个 MapReduce 的 Reducer 类,用于对输入数据进行聚合操作。它的输入键值对类型为 Text 和 IntWritable,输出键值对类型也是 Text 和 IntWritable。该类定义了一个名为 counts 的 Map 对象,用于保存每个 key 对应的总和。
在 reduce() 方法中,它遍历了所有的 values,将其相加得到了一个 sum 值,并将其保存到 counts 中。
在 cleanup() 方法中,它首先将 counts 中的键值对存入一个 ArrayList 中,并按照排序规则进行排序,排序规则是:先按照值降序排序,如果值相同则按照键升序排序。排序后,它遍历排序后的 ArrayList,将其中的键值对写入输出文件中。
这段代码的作用是对输入的数据进行聚合操作,并按照一定规则排序后输出结果。
阅读全文