您的位置:首页 > 职场人生

面试考到的问题

2010-05-29 14:59 225 查看
Code:

/**

* 有两个字符串数组a和b,寻找相同元素 (a和b都比较大),求效率最高的解答

*

* @author Administrator 2010-5-29

*/

// 第一种方法:基本思路:相同 = 集合2-(集合2-集合1中相同的)

public static void getSameElementByList(String[] strArr1, String[] strArr2) {

Long begin = System.currentTimeMillis();

List<String> list1 = new ArrayList<String>(Arrays.asList(strArr1));

List<String> list02 = new ArrayList<String>(Arrays.asList(strArr2));

List<String> list12 = new ArrayList<String>(Arrays.asList(strArr2));

list02.removeAll(list1);

Iterator<String> it = list02.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

System.out.println("-------华丽的分割线-----------");

list12.removeAll(list02);

Iterator<String> it2 = list12.iterator();

while (it2.hasNext()) {

System.out.println(it2.next());

}

Long end = System.currentTimeMillis();

System.out.println("此方法运行共使用时间" + (end - begin) + "ms");

}

// 第二种方法:把数组A的数据作为map的key,和value,然后用B的数据取值,不为NULL,说明相同

public static void getSameElementByMap(String[] strArr1, String[] strArr2) {

Long begin = System.currentTimeMillis();

Map<String, Object> map = new HashMap<String, Object>();

for (String str : strArr1) {

map.put(str, str);

}

for (String str2 : strArr2) {

Object obj = map.get(str2);

if (obj != null) {

System.out.println(obj.toString());

}

}

Long end = System.currentTimeMillis();

System.out.println("此方法运行共使用时间" + (end - begin) + "ms");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: