很纠结的问题 有很多类似于这样的成对数据,怎么存到内存中去,用哪个集合性能好些"n1" , "abcdef""n1", "me""n1", "you""n1", "he""n2" "aae" "n2" "eae""n2" "safe""n2" "ase" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哪个作key? 哪个作value? 你要是这么说反而简单了n1作key,后面所有的都做值,想分开每个值,可以加个逗号之类的,或者把value做成list 用List<String> list=new ArrayList<String>();动态数组 思路用HashTable或者HashMap是没错的。因为明显是key-value。但是楼上各位说的不是最佳方案,直接用String-String这样的Value-Key方式。我的方案:key可以用n1,n2这样的String, 但是value不要直接用"abc","1231321",你可以把具有相同key的value丢进一个Collection里面,也就是说你现在的key-value对是n1-Collection1,n2-Collection2这种方式。好处:1)便于增删数据,如果你的n1要增加或者减少元素,直接修改ColletionX就可以了Collection是jdk封装的基本框架,效率很高,有许多实现,如List,Set等等2)便于扩展:如果要支持线程安全就用vector;如果要剔除重复数据且排序,就用TreeSet。真正实现了面向接口编程 hashtableput("n1",new ArrayList())put("n2",new ArrayList())list里面保存那一坨 不能直接用HASHTABLE,要先给数据做个处理,将n1,n2的 数据以一个符号连接起来,如:“,”,“|”等hashtable中的数据如下:key:n1,value: "abcdef,me,you,e"key:n2,value:"aae,eae,safe,ase"读出数据时要字符分割了。这样的做法和10楼的类似,但不知道哪种效率高些 public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("abcdef", "n1"); map.put("me", "n1"); map.put("you", "n1"); map.put("he", "n1"); map.put("aae", "n2"); map.put("eae", "n2"); map.put("safe", "n2"); map.put("ase", "n2"); for (Map.Entry<String, String> mapentry : map.entrySet()) { if ("n1".equals(mapentry.getValue())) { System.out.println(mapentry.getKey() + ":" + mapentry.getValue()); } } }打印结果:abcdef:n1you:n1me:n1he:n1 直接String吧n1.abcdef.me.you.he.....想找出来n1对应也简单 用正则判断各个字符串属哪个再把需要的后边给分解出来 可以考虑使用MultiHashMapMultiMap mhm = new MultiHashMap(); mhm.put(key, "A"); mhm.put(key, "B"); mhm.put(key, "C"); Collection coll = (Collection) mhm.get(key); 用String, String的方式对内存性能最高。 如['nl', ',value1,value2,value3']等。要查找是否键值存在,只要index下(',value')是否有就可以了。注意键值第一个字符是分隔符如,。 Jdk 1.6换成1.5之后HttpServlet提示编译不正确,类型不能得到解决 大家帮看一下这段代码为什么错的,谢谢了 用io如何读取系统二进制文件 急用 感谢!!!!! 如何获取java文件的依赖关系??? 菜鸟问题,如何卸载jdk jbuilder x的地址 子类父类属于同一个类么 SequenceInputStream,BufferedInput/OutputStream有什么用呢? 项目中需要读写条形码,哪位高手给解释一下 JSP和XML差不多吗? java菜鸟问题...哪位朋友能帮我解决 java数据类型
哪个作key? 哪个作value?
n1作key,后面所有的都做值,想分开每个值,可以加个逗号之类的,或者把value做成list
你现在的key-value对是n1-Collection1,n2-Collection2这种方式。好处:
1)便于增删数据,如果你的n1要增加或者减少元素,直接修改ColletionX就可以了Collection是jdk封装的基本框架,效率很高,有许多实现,如List,Set等等
2)便于扩展:如果要支持线程安全就用vector;如果要剔除重复数据且排序,就用TreeSet。真正实现了面向接口编程
put("n1",new ArrayList())
put("n2",new ArrayList())
list里面保存那一坨
hashtable中的数据如下:
key:n1,value: "abcdef,me,you,e"key:n2,value:"aae,eae,safe,ase"
读出数据时要字符分割了。
这样的做法和10楼的类似,但不知道哪种效率高些
{
Map<String, String> map = new HashMap<String, String>();
map.put("abcdef", "n1");
map.put("me", "n1");
map.put("you", "n1");
map.put("he", "n1");
map.put("aae", "n2");
map.put("eae", "n2");
map.put("safe", "n2");
map.put("ase", "n2");
for (Map.Entry<String, String> mapentry : map.entrySet())
{
if ("n1".equals(mapentry.getValue()))
{
System.out.println(mapentry.getKey() + ":" + mapentry.getValue());
}
}
}打印结果:
abcdef:n1
you:n1
me:n1
he:n1
n1.abcdef.me.you.he.....
想找出来n1对应也简单 用正则判断各个字符串属哪个
再把需要的后边给分解出来
mhm.put(key, "A");
mhm.put(key, "B");
mhm.put(key, "C");
Collection coll = (Collection) mhm.get(key);
要查找是否键值存在,只要index下(',value')是否有就可以了。
注意键值第一个字符是分隔符如,。