A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毕影彬 中级黑马   /  2012-10-19 18:21  /  1686 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 毕影彬 于 2012-10-20 18:59 编辑

数组Chinese_names长度5000,用来存放员工的中文名如:{ "张三","李四","王五"…… }
数组English_names长度5000,用来存放员工的英文名如:{"zhang san" , "li si" , "wang wu"...... }
两个数组的长度和值的顺序都是一一对应的。

我现在已知一个员工的英文名,怎么来判断它是否存在于English_names中,如果存在获取其中文名字。


我之前用的方法是利用循环来做的,用此名字和English_names中的值一一对比,如果比较成功则根据其值的位置来上Chinese_names数组中获取其中文名。这样做不错,但是效率太低,谁有更好的方法没?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

4 个回复

倒序浏览

回复 使用道具 举报
本帖最后由 徐梦侠 于 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));
     }
}
}
回复 使用道具 举报
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"));//李四
        }
}
回复 使用道具 举报
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("指定用户不存在");
                }
               
        }

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马