Tag: 字典

LatinIME dicttool用于V401二进制字典

我正在尝试将版本401 二进制字典 – 一个名为PersonalizationDictionary.en_US.dict的目录 – 转换为人类可读的.x​​ml。 packages / inputmethods / LatinIME / tools / dicttool中的命令行实用程序dicttool_aosp可以这样做: dicttool_aosp makedict -s sourcedict.dict -x output.xml 我无法编译Android Lollipop版本的dicttool,因为dicttool具有本机C ++依赖关系,这些依赖关系不适合我的Mac。 请注意dictool的NativeLib.mk文件中的这一行: HACK: Temporarily disable host tool build on Mac until the build system is ready for C++11. 我希望有兼容设置的人可以使用来自AOSP源代码树根目录的“make dicttool_aosp”为我编译这个实用程序。 过去几天我一直在寻找它的编译版本,虽然我在网上发现了很多makedict.jar文件,但它们太旧了,无法支持我的新版V401二进制字典。 V401和旧版本之间的主要区别在于V401被分成多个文件,扩展名为.bigrams,.freq,.header,而较旧的dicts包含在一个文件中。 谢谢,如果我能说清楚的话,请告诉我!

如何使用lambda初始化地图?

我想在单个语句中声明一个完全填充的映射字段(可能包含几个嵌套语句),如下所示: private static final Map map = something-returning-an-unmodifiable-fully-populated-HashMap; 匿名初始化程序不会这样做,因为调用返回新填充映射的函数不会这样做:它们需要两个顶级语句:一个用于变量声明,一个用于方法或初始化程序。 双花括号( {{和}} )成语将起作用,但它会创建一个扩展HashMap全新类,我不喜欢这个代表的开销。 Java 8的lambdas是否可能提供更好的方法来实现这一目标?

java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[Ljava.lang.String;

我需要将HashMap转换为String数组,以下是我的java代码 import java.util.HashMap; import java.util.Map; public class demo { public static void main(String[] args) { Map map1 = new HashMap(); map1.put(“1”, “1”); map1.put(“2”, “2”); map1.put(“3”, “3”); String[] str = (String[]) map1.keySet().toArray(); for(int i=0; i<str.length;i++) { System.out.println(str[i]); } } } 当我运行代码时,我得到以下ClassCastException。 Exception in thread “main” java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String; at demo.main(demo.java:17) 我对此感到困惑,谁能帮助我。

如何获取地图中的上一个键/值和下一个键/值

for (Entry entry : map.entrySet()) { Double key = entry.getKey(); String value = entry.getValue(); // double nextKey = ? // String nextvalue = ? // double prevKey = ? // String prevValue = ? } 是否有可能在迭代地图时知道前一个元素和下一个元素是什么?

对象转换模式

我有几个不同的类来自外部源(不可修改),代表相同的概念。 例如Address 。 我有com.namespace1.Address (包含字段houseNum , street , city ), com.namespace2.Address (包含字段h , s , c ), namespace3.com.CoolAddress (包含字段house_num , street , city )。 问题是我使用的某些Web服务需要某些Address对象类型,因此我需要在给定namespace3.com.CoolAddress创建com.namespace1.Address 。 字段很容易映射,但我正在寻找一个如何做的模式。 从我的角度来看,实例对象AddressConverter没有意义,因为没有状态(只有行为),当类只有行为时,它归结为实用程序类中的静态方法。 从长远来看,无论何时我需要将新对象相互映射,我都有一个地方可以添加/修改/删除方法。 如何完成它可能会改变,但我知道代码所在的位置(在一次位置)并且可以在需要时更改映射。 思考?

计算Java中Map的键的出现次数

我正在编写一个项目,从.java文件中捕获Java关键字,并使用地图跟踪事件。 我过去使用过类似的方法,但是我似乎无法在这里采用这种方法。 Map map = new TreeMap(); Set keywordSet = new HashSet(Arrays.asList(keywords)); Scanner input = new Scanner(file); int counter = 0; while (input.hasNext()) { String key = input.next(); if (key.length() > 0) { if (keywordSet.contains(key)) { map.put(key, 1); counter++; } if(map.containsKey(key)) <–tried inner loop here, failed { int value = map.get(key); value++; map.put(key, value); } […]

Java 8流连接并返回多个值

我正在将一段代码从.NET移植到Java,并偶然发现了我想使用流来映射和减少的情况。 class Content { private String propA, propB, propC; Content(String a, String b, String c) { propA = a; propB = b; propC = c; } public String getA() { return propA; } public String getB() { return propB; } public String getC() { return propC; } } List contentList = new ArrayList(); contentList.add(new Content(“A1”, […]

从键中以某个表达式开始的Map获取所有值的最快方法

考虑你有一个map myMap 。 给定表达式”some.string.*” ,我必须从myMap检索其键以此表达式开头的所有值。 我试图避免for loop s因为myMap将被赋予一组表达式,而不仅仅是一个表达式,并且每个表达式使用for loop变得非常麻烦。 最快的方法是什么?

为什么HashMap的哈希表标记为瞬态,尽管该类是可序列化的

我正在查看HashMap的来源。 HashMap implements Serializable 。 好的,它可以作为对象进行存储/传输。 但我发现散列表本身被标记为transient 。 我不明白。如果你把它标记为瞬态,这是不是意味着它不应该被序列化? 但所有的数据都在表格中。那为什么它是transient ? 也许我对Serializable如何工作感到困惑?

如何使用HashMap编写和读取文件?

我有一个带有两个字符串Map ldapContent = new HashMap的HashMap Map ldapContent = new HashMap 。 现在我想将Map保存在外部文件中,以便稍后使用Map而无需再次初始化它… 那么如何保存Map以便以后再使用呢?