如何在Java中使用集合
我想使用Java collection查找列表中以启动字母开头的单词: 例如:如何在Java中使用集合,java,collections,treemap,Java,Collections,Treemap,我想使用Java collection查找列表中以启动字母开头的单词: 例如: TreeMap<String, Double> tm = new TreeMap<String, Double>(); // Put elements to the map tm.put("Zara", new Double(3434.34)); tm.put("Mahnaz", new Double(123.22)); tm.put("Ay
TreeMap<String, Double> tm = new TreeMap<String, Double>();
// Put elements to the map
tm.put("Zara", new Double(3434.34));
tm.put("Mahnaz", new Double(123.22));
tm.put("Ayan", new Double(1378.00));
tm.put("Daisy", new Double(99.22));
tm.put("Qadir", new Double(-19.08));
Toast.makeText(getApplicationContext(), ""+tm.get("Zar"),Toast.LENGTH_SHORT).show();
TreeMap tm=newtreemap();
//把元素放到地图上
tm.put(“Zara”,新双(3434.34));
tm.put(Mahnaz,新双(123.22);;
tm.put(“阿扬”,新双(1378.00));
tm.put("雏菊",新双色(99.22);;
tm.put(“Qadir”,新双(-19.08));
Toast.makeText(getApplicationContext(),“”+tm.get(“Zar”),Toast.LENGTH\u SHORT.show();
在这种情况下,它将显示null。但我想做的是展示所有以这个字母开头的单词。我该怎么做?提前感谢有几种选择:
映射
,其中数据
包含字符串名称
和双精度
,键是所有名称的前三个字母树状图
,因为它是排序的,所以至少您知道,一旦通过Zar,您可以停止,但这仍然是低效的您只需迭代列表并检查键是否以给定字符串开头 例如:
for (String elem : tm.keySet()) {
if(elem.startsWith("Zar")) {
System.out.println(elem);
}
}
输出:
Zara
如果你想忽略这个案例:
if(elem.toLowerCase().startsWith("zar".toLowerCase()))
TreeMap tm=newtreemap();
//…增加价值。
//拿到所有钥匙
设置键=tm.keySet();
Set result=new HashSet();
用于(字符串键:键){
//检查钥匙的开头
if(钥匙起动带(“Zar”){
结果:输入(键);
}
}
//获取收集的密钥的值
for(字符串键:结果){
双值=tm.get(键);
}
只有在代码中遇到完全相同的情况时,阅读何时使用什么集合才会对您有所帮助。如果您不理解给定数据结构解决问题的根本原因,您将无法将其应用于自己的代码
链接可能会帮助您那么您如何实现这一点呢 首先通过查找HashMap的所有键
tm.keySet()
然后对键使用迭代器并与字符串匹配
String abc = "Zar";
HashMap s = new HashMap();
s.put("Zara", new Double(1.0));
Set x =s.keySet();
Iterator iter = x.iterator();
while (iter.hasNext()) {
String key = iter.next().toString();
if(key.startsWith(abc)){
System.out.println(s.get(key));
}
}
由于
TreeMap
是一个函数,因此从给定的键开始迭代映射在计算上比较便宜:
String prefix = "Zar";
for (String person::tm.tailMap(prefix).keySet()) {
if (person.startsWith(prefix)) {...}
}
tm.get(“Zar”)与tm.get(“Zara”)完全不同,因此,我如何才能仅使用启动字母从中获取密钥?此功能是否还有更多可用的集合?如果我从数据库中有200000多个条目并将其添加到tm中。使用这种用法,它是否运行快速且平稳?因为我使用for()进行测试Arraylist=>每次搜索单词时它似乎运行缓慢在这种情况下,我会在对键集排序后搜索,并检查是否可以取消搜索。对于性能问题:始终在实际设置中测试它。如果当前解决方案没有问题,则无需对其进行优化。
String prefix = "Zar";
for (String person::tm.tailMap(prefix).keySet()) {
if (person.startsWith(prefix)) {...}
}