当前位置:编程学习 > JAVA >>

怎么做循环次数最少呢

有两个数组一个N 个元素,另一个M 个元素,这两个数组中有些元素是相同的,希
望通过编写一段程序将两个数组中的相同元素找出来,请用最少的循环次数完成需求,请问
需要用什么方法? --------------------编程问答-------------------- 遍历数组A 把数据放入HashSet中,

遍历数组B ,if(!set.add(B[i])) 则当前数据在A中也同样存在 --------------------编程问答--------------------
引用 1 楼 gukuitian 的回复:
遍历数组A 把数据放入HashSet中,

遍历数组B ,if(!set.add(B[i])) 则当前数据在A中也同样存在


HashSet里的循环也应该记在总循环次数中吧? --------------------编程问答-------------------- A B两个数组有序否?或者两列直接合并排序? --------------------编程问答-------------------- 先给两个数组排序再用二分查找 --------------------编程问答-------------------- for example
用集合的交并差方法可以不?
Object[] a = xxx;
Object[] b = yyy;
List<Object> l1 = new ArrayList<Object>(Arrays.asList(a));
List<Object> l2 = new ArrayList<Object>(Arrays.asList(b));
l1.retainAll(l2); //两个集合的交集
for (Object o : l1) {
    System.out.println(o);
}
--------------------编程问答--------------------
引用 5 楼 qybao 的回复:
for example
用集合的交并差方法可以不?
Java code
Object[] a = xxx;
Object[] b = yyy;
List<Object> l1 = new ArrayList<Object>(Arrays.asList(a));
List<Object> l2 = new ArrayList<Object>(Arrays.asList(b));
l1.ret……


jdk1.7? --------------------编程问答-------------------- Object[] a;
Object[] b;
Map map=new HashMap();
for(int m=0;m<a.length;m++){
 map.put(a[m],a[m]);
}
for(int n=0;n<b.length;n++){
 if(map.get(b[n])!=null) System.out.println();
} --------------------编程问答--------------------
引用 6 楼 softroad 的回复:
jdk1.7?

1.5或更早就有了吧,Collection的方法,早就很成熟了
--------------------编程问答-------------------- 集合求交集底层是怎么实现了,你知道循环了几次? --------------------编程问答--------------------
引用 8 楼 qybao 的回复:
引用 6 楼 softroad 的回复:
jdk1.7?

1.5或更早就有了吧,Collection的方法,早就很成熟了


就觉得熟悉很,没找到地方 --------------------编程问答-------------------- 脑袋记不住啦。 --------------------编程问答-------------------- 交集1.5貌似就有了 --------------------编程问答--------------------
引用 4 楼 only_wish_you_better 的回复:
先给两个数组排序再用二分查找


这样找效率确实是高,但是排序本身也需要循环,当然可以使用set接口下的类。 --------------------编程问答-------------------- public static void main(String[] args) {
String a[]={"0","1","2","3","4","5","6","7"};
String b[]={"5","6","7","8","9","10","11"};
Map map=new HashMap();
for(int m=0;m<a.length;m++){
 map.put(a[m],a[m]);
}
for(int n=0;n<b.length;n++){
 if(map.get(b[n])!=null) 
    System.out.println(b[n]);


} --------------------编程问答-------------------- 数据不太大的话感觉直接放到map里面直接map.containsKey()就行了,map查找肯定比List快 --------------------编程问答-------------------- 同意四楼的
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,