面试考到的问题
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");
}
/**
* 有两个字符串数组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");
}
相关文章推荐
- 面试问题Executors有哪些创建线程池的方法
- 经典面试问题:12小球问题算法(源码)
- SP入行面试38个必答问题, 献给还想入行的
- 面试前需提前准备的问题
- 前端工作面试问题
- 机器学习LR模型,在面试中经常被问到的问题
- Oralce数据库的优化(面试必问题)
- 前端面试中的常见的算法问题
- C语言链表在笔试面试中常考问题总结
- 小米Java程序员第二轮面试10个问题 你是否会被刷掉?
- C#方向高级开发人员面试时应该事先考虑的问题
- android面试问题
- 面试的时候遇到过的问题
- 10个我最喜欢问程序员的面试问题
- 8.Hibernate总结以及在面试中的一些问题.
- IT oracle 相关面试问题
- Java集合框架面试问题集锦
- 常见面试算法问题
- PM面试问题最佳答案
- 经典面试问题回答思路