黑马程序员技术交流社区
标题:
数组的问题!!!
[打印本页]
作者:
毕影彬
时间:
2012-10-19 18:21
标题:
数组的问题!!!
本帖最后由 毕影彬 于 2012-10-20 18:59 编辑
数组Chinese_names长度5000,用来存放员工的中文名如:{ "张三","李四","王五"…… }
数组English_names长度5000,用来存放员工的英文名如:{"zhang san" , "li si" , "wang wu"...... }
两个数组的长度和值的顺序都是一一对应的。
我现在已知一个员工的英文名,怎么来判断它是否存在于English_names中,如果存在获取其中文名字。
我之前用的方法是利用循环来做的,用此名字和English_names中的值一一对比,如果比较成功则根据其值的位置来上Chinese_names数组中获取其中文名。这样做不错,但是效率太低,谁有更好的方法没?
作者:
黄小贝
时间:
2012-10-19 18:56
1.png
(10.91 KB, 下载次数: 14)
下载附件
2012-10-19 18:56 上传
作者:
徐梦侠
时间:
2012-10-19 18:57
本帖最后由 徐梦侠 于 2012-10-19 19:00 编辑
可以用Map集合,感觉更方便些。
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
String[] English_names={"zhangsan","lisi","wangmazi"};
String[] Chinese_names={"张三","李四","王麻子"};
String work="lisi";
judgeName(English_names, Chinese_names, work);
}
private static void judgeName(String[] English_names,
String[] Chinese_names, String work) {
HashMap<String,String> workerName=new HashMap<String, String>();
for(int i=0;i<English_names.length;i++){
workerName.put(English_names
, Chinese_names
);
}
if(workerName.get(work)==null){
System.out.println("不存在此人");
}else{
System.out.println(work+" 的中文名是:"+workerName.get(work));
}
}
}
作者:
陈家明
时间:
2012-10-19 19:57
Map集合是存储键值对的,一一对应,保证键的唯一性。
import java.util.HashMap;
import java.util.Map;
public class GetName {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String,String>();
map.put("zhangsan", "张三");
map.put("lisi", "李四");
map.put("wangwu", "王五");
System.out.println("lisi是否存在--"+map.containsKey("lisi")); //true
System.out.println("zhaoliu是否存在--"+map.containsKey("zhaoliu"));//false
System.out.println("lisi的中文名字--"+map.get("lisi"));//李四
}
}
作者:
葬天
时间:
2012-10-19 20:52
Map 键值对 解决 映射问题比较好
如若 非用 数组
楼主可考虑应用如下方法 尝试一下
但 必须保证用户名不重复
import java.util.Arrays;
import java.util.List;
/**
* 完成数组列表查询
* @author yangmeicheng
*
*/
public class TestArray
{
public static void main(String[] args)
{
String[] chinese_names = {"张三","李四","王五"};
String[] english_names = {"zhangsan","lisi","wangwu"};
exchangeName(english_names,chinese_names,"zhangsan");
}
/**
* 完成用户名中英转换
* @param eArr 英文数组
* @param cArr 中文数组
* @param key 待查找对象
*/
public static void exchangeName(String[] eArr, String[] cArr,String key)
{
//将待查数组转换成List集合
List<String> list = Arrays.asList(eArr);
//判断是否存在待查数据索引值
int index = list.indexOf(key);
if(!(index < 0))
{
System.out.println("所查找的用户的中文名为:"+cArr[index]);
}
else
{
System.out.println("指定用户不存在");
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2