JAVA,用List做,两个数组中数的合并和去除相同元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA,用List做,两个数组中数的合并和去除相同元素相关的知识,希望对你有一定的参考价值。
用List做一个数组的问题
定义2个数组 数组中的数字自定义 但一定有交集
然后合并2个数组 从小到大排序 去除相同元素
import java.io.File;
import java.io.FileWriter;
import java.util.Arrays;
/**
* 把一个数组的元素复制到另个数组; 去除重复元素不能用SET集合; 每次复制的记录输到一个文件里
*
* @author ajax_2003
* @version 1.0, 2009-7-26
*
*/
public class CopyArrayAndRemoveDuplicate
private static String FILE_PATH = "d:/abc.txt";
private static File file;
static
file = new File(FILE_PATH);
/**
* 取出冗余数据
*
* @param nums
* 原数组
*/
private int[] removeDuplicate(int[] nums) throws Exception
int[] tmpArray = new int[nums.length];
int count = 0;
loop: //
for (int i = 0; i < nums.length; i++)
int tmp = nums[i];
for (int j = 0; j < count; j++)
if (tmp == tmpArray[j])
continue loop;
tmpArray[count++] = tmp;
log("成功复制了元素" + tmp);// 写日志
return copyArray(tmpArray, 0, count);
/**
* 拷贝数组
*
* @param srcArray
* 要拷贝的数组
* @param startIndex
* 拷贝起始索引
* @param endIndex
* 拷贝结束索引
* @return 结果数组
*/
private int[] copyArray(int[] srcArray, int startIndex, int endIndex)
throws Exception
if (endIndex <= startIndex)
throw new Exception("Argumens wrong!");
int[] desArray = new int[endIndex - startIndex];
System.arraycopy(srcArray, startIndex, desArray, 0, desArray.length);
return desArray;
/**
* 输出操作日志(即: 每次复制的记录输到一个文件里)
*
* @param oprate
*/
private void log(String oprate)
FileWriter out = null;
try
out = new FileWriter(file, true);
out.write(oprate + "\r\n");
catch (Exception e)
e.printStackTrace();
finally
try
if (out != null)
out.close();
out = null;
catch (Exception ex)
ex.printStackTrace();
public static void main(String[] args)
int[] nums = 1, 223, 1, 2, 2, 2, 3, 2, 3, 34, 45, 5, 5, 3, 23, 2, 2,
3, 4, 5, 5, 6, 7, 78, 8, 9, 34, 90, 45, 675, 4, ;
int[] finalArray;
try
finalArray = new CopyArrayAndRemoveDuplicate()
.removeDuplicate(nums);
System.out.println(Arrays.toString(finalArray));
catch (Exception e)
e.printStackTrace();
有些地方可能考虑的不完全,见谅!
//合并数组并排序
public void arrCopy()
int[] a = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
int[] b = 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 ;
System.arraycopy(a, 2, b, 5, 5);
for(int n : b)
System.out.print(n+",");
System.out.println();
//去掉重复元素
public static void main(String args[])
int[] arr = 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 6, 6, 7, 8, 9, 9, 10, 11, 11,
11, 12, 12, 13, 14, 14, 15 ; // 预设数据数组
int index = 1; // 保存最后一个不重复的位置
int last = arr[0];
for (int i = 1; i < arr.length; i++)
if (arr[i] != last)
arr[index] = arr[i];
last = arr[index];
index++;
int[] rtn = new int[index];
System.arraycopy(arr, 0, rtn, 0, index);
System.out.println(Arrays.toString(rtn));
参考技术A public class test
public static void main(String[] args)
Set set=new TreeSet();
List list1=new ArrayList();
list1.add(5);
list1.add(3);
list1.add(1);
List list2=new ArrayList();
list1.add(6);
list1.add(3);
list1.add(0);
set.addAll(list1);
set.addAll(list2);
for(Object obj:set)
System.out.println(obj);
干吗有的用不用??本回答被提问者采纳 参考技术B import java.util.ArrayList;
public class c1
public static void main(String args[])
int[] a = new int[]
6, 3, 7, 9, 2 ;
int[] b = new int[]
5, 8, 3, 1, 6 ;
ArrayList list = new ArrayList();
for (int i = 0; i < a.length; i++)
boolean flag = true;
for (int j = 0; j < list.size(); j++)
if (((Integer) list.get(j)).intValue() == a[i])
flag = false;
break;
if (flag)
list.add(new Integer(a[i]));
for (int i = 0; i < b.length; i++)
boolean flag = true;
for (int j = 0; j < list.size(); j++)
if (((Integer) list.get(j)).intValue() == b[i])
flag = false;
break;
if (flag)
list.add(new Integer(b[i]));
for (int i = 0; i < list.size(); i++)
for (int j = i; j < list.size(); j++)
if (((Integer) list.get(i)).intValue() > ((Integer) list.get(j)).intValue())
Integer temp = (Integer) list.get(i);
list.remove(i);
list.add(i, list.get(j - 1));
list.remove(j);
list.add(j, temp);
for (int i = 0; i < list.size(); i++)
System.out.println(((Integer) list.get(i)).intValue());
这是最笨的方法 参考技术C 放到set里面再迭代 参考技术D public static void main(String[] args)
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list2.add(3);
list2.add(4);
list2.add(5);
list2.add(6);
List<Integer> list = new ArrayList<Integer>();
list.addAll(list1);
list.addAll(list2);
System.out.println(list);
Collections.sort(list, new Comparator<Integer>()
public int compare(Integer o1, Integer o2)
return o1 - o2;
);
System.out.println(list);
for (int i = 1; i < list.size(); i++)
if (list.get(i) == list.get(i - 1))
list.remove(i);
System.out.println(list);
以上是关于JAVA,用List做,两个数组中数的合并和去除相同元素的主要内容,如果未能解决你的问题,请参考以下文章