Integer[] 转 String[] 数组

doney_dongxiang 2009-05-31 05:01:46
现有
Integer[] arr1 = {0,1,2,3,........................};
Integer[] arr2 = {7,100,500,600,........................};

两个数组,两个整型数值存储着n个元素,找出它们的并集,并且转化成String[] arr3 = {0,1,2...............};

要气尽可能高的效率处理这个操作,望各位有啥高招
...全文
698 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
catslee 2009-06-01
  • 打赏
  • 举报
回复
hashtable方便好用点~~!!
WYhack 2009-06-01
  • 打赏
  • 举报
回复
帮顶!!!!
wibnmo 2009-06-01
  • 打赏
  • 举报
回复
hashtable
DJBCAINIAO 2009-06-01
  • 打赏
  • 举报
回复
修改一下
Integer[] arr1 = { 0, 1, 2, 3 .....};
Integer[] arr2 = { 7, 100, 500, 600 ......};
int i,j;
StringBuffer str = "";
while(i <arr1.length && j <arr2.length){
if(arr1[i]==arr2[j]){
str = str.appand(arr[i]);
i++;
j++;
}
else if(arr1[i]>arr2[j]){
j++;
}
else{
i++;
}
}
DJBCAINIAO 2009-06-01
  • 打赏
  • 举报
回复
Integer[] arr1 = { 0, 1, 2, 3 .....};
Integer[] arr2 = { 7, 100, 500, 600 ......};
int i,j;
StringBuffer str = "";
while(i<arr1.length && j<arr2.length){
if(arr1[i]==arr2[j]){
str = str + arr[i];
i++;
j++;
}
else if(arr1[i]>arr2[j]){
j++;
}
else{
i++;
}
}


方法时间复杂度为O(n)

这里只提供一种思想具体实现还是自己做吧?(在数组有序情况下无序时可以先排序时间复杂度为O(3N))
希望你能用上
tfsict2008 2009-06-01
  • 打赏
  • 举报
回复
用集合类可以做
raymondguo008 2009-06-01
  • 打赏
  • 举报
回复
set固然可以
但是要考虑到效率
还是用hashtable比较好
个人观点
baetg 2009-06-01
  • 打赏
  • 举报
回复
toString
leojay1 2009-06-01
  • 打赏
  • 举报
回复
我想问一下,你形成的数组是由他们的并集生成还是合并1,2生成?
少龙123 2009-06-01
  • 打赏
  • 举报
回复
直接往set里放,放的时候toString()
shizheyiyi 2009-05-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnbyte 的回复:]
先把两个数组放到hashtable里面去,值就做key,加异常处理,重复的key就加不进去了,然后直接导出String数组就可以了
[/Quote] 貌似可以
hey_bluebird 2009-05-31
  • 打赏
  • 举报
回复
set可以放不能重复的值,是解决问题的关键吧。。
feversteven 2009-05-31
  • 打赏
  • 举报
回复
学习
donggecom 2009-05-31
  • 打赏
  • 举报
回复
你的算法效率有点低了吧,改成两个并列的for循环,然后放到HashSet进行排序应该好些。
JayPan2008 2009-05-31
  • 打赏
  • 举报
回复

初学,还尚未接触到这,先收藏
Adebayor 2009-05-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 calibure 的回复:]
合并,并且有序。

Java code
import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;

public class MergeArray {
public static void main(String[] args) {
Integer[] arr1 = { 0, 1, 2, 3 };
Integer[] arr2 = { 7, 100, 500, 600 };
System.out.println(Arrays.toString(merge(arr1, arr2)));
}

public static Object[] merge(Integer[]... arr) {
Set<…
[/Quote]
这种实现比较好
dajiadebeibei9 2009-05-31
  • 打赏
  • 举报
回复
学习了算是,帮顶
calibure 2009-05-31
  • 打赏
  • 举报
回复
合并,并且有序。

import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;

public class MergeArray {
public static void main(String[] args) {
Integer[] arr1 = { 0, 1, 2, 3 };
Integer[] arr2 = { 7, 100, 500, 600 };
System.out.println(Arrays.toString(merge(arr1, arr2)));
}

public static Object[] merge(Integer[]... arr) {
Set<Integer> set = new TreeSet<Integer>();
for (Integer[] integers : arr) {
for (Integer integer : integers) {
set.add(integer);
}
}
String[] strArrays = new String[set.size()];
int i = 0;
for (Integer integer : set) {
strArrays[i++] = integer.toString();
}
return strArrays;
}
}
cy729215495 2009-05-31
  • 打赏
  • 举报
回复


int[] a= {1,2,3,4};
int[] b={3,4,5,6};
HashSet set=new HashSet();
for(int i=0, k=a.length;i<k;i++)
set.add(String.valueOf(a[i]));
for(int i=0, k=b.length;i<k;i++)
set.add(String.valueOf(b[i]));
Object[] strs=set.toArray();
for(int i=0, k=set.size();i<k;i++)
System.err.println(strs[i]);

awusoft 2009-05-31
  • 打赏
  • 举报
回复
HashSet
加载更多回复(3)

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧