黑马程序员技术交流社区
标题:
高效查询两个数组和list中相同元素
[打印本页]
作者:
黎健东
时间:
2013-3-8 13:27
标题:
高效查询两个数组和list中相同元素
数组a:aa,bb,cc,dd,ee
数组b:aa,ff,gg,cc
用最小次数查询出两个数组相同的元素。
如果换成list,又是怎么样的
list a:aa,bb,cc,dd,ee
list b:aa,ff,gg,cc
作者:
陈圳
时间:
2013-3-8 13:49
class Test3
{
public static void main(String[] args)
{
String[] a1={"aa","bb","cc","dd","ee"};
String[] a2={"aa","ff","gg","cc"};
System.out.println(getStr(a1,a2));//输出aa,cc
}
public static String getBuf(ArrayList<String> a1,ArrayList<String> a2)//都是一个想法,就是先把其中一个转换成一个字符串,
//如果用方法查找,实现最小比较次数得到相同元素
{
String s="";
String str="";
for(Iterator<String> in=a1.iterator();in.hasNext();)
s+=in.next();
for(String s1:a2)
{
if(s.contains(s1))
str+=s1+" ";
}
return str;
}
public static String getStr(String[] a1,String[] a2)//字符串
{
String s=Arrays.toString(a1);
String s2="";
for(String s1:a2)
{
if(s.contains(s1))//这个只需要判断字符数组的长度,就可以得到结果
s2+=s1+" ";
}
return s2;
}
}
复制代码
这算么?
作者:
黎健东
时间:
2013-3-8 14:34
陈圳 发表于 2013-3-8 13:49
这算么?
哈哈,还不错哈,谢谢
对了,再请教一下
4/9;
我想得到一个精确2位小数,该怎么写,好久没写忘了
作者:
陈圳
时间:
2013-3-8 14:36
黎健东 发表于 2013-3-8 14:34
哈哈,还不错哈,谢谢
对了,再请教一下
4/9;
public static double method_8(double d1,int n)
{
double d2=d1-(int)d1;//取d1的小数位
int num=1;
for(int i=0;i<n;i++)
num*=10;
d2=(int)(d2*num);//保留num位数
d1=(int)d1;//将d1取整
d1=d1+d2/num;//加上d1的小数位
return d1;
}
这是以前写的保留浮点型数据的任意位数的方法.你参考下.
作者:
克零岚
时间:
2013-3-8 15:13
两个数组问题,我的代码用到了HashSet集合;关于List类型的也可以,看完这个,List类型的你也能写出来了
public class Contain {
static String a [] = {"aa","bb","cc","dd","ee"};
static String b [] = {"aa","ff","gg","cc"};
static void Contain ()
{
HashSet<String> aa = new HashSet<String>();
for(int i=0;i<a.length;i++){
aa.add(a[i]);
}
for(int i=0;i<b.length;i++){
if(aa.contains(b[i])){
System.out.println(b[i]);
}
}
}
public static void main(String[] args) {
Contain();
}
}
复制代码
作者:
黑马_位志国
时间:
2013-3-8 15:34
黎健东 发表于 2013-3-8 14:34
哈哈,还不错哈,谢谢
对了,再请教一下
4/9;
import java.text.DecimalFormat;
/**
* 【获取小数点后两位数】
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) {
DecimalFormat digits = new DecimalFormat("0.00");
System.out.println(digits.format((double)4/9));
}
}
作者:
冯祖焱
时间:
2013-3-8 16:15
我提供一种ACM程序设计竞赛中常用的方案:
1、先把两个数组/集合排序,可使用快速排序,时间复杂度为 nLog(n)
2、拿数组1中的元素使用二分查找在数组2中查找,时间复杂度为 log(n)
ps:数据量较大的时候使用,数据量小就没必要这样折腾了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2