黑马程序员技术交流社区
标题:
基础测试里的题有朋友帮忙解答一下吗?
[打印本页]
作者:
gtf
时间:
2014-7-6 22:07
标题:
基础测试里的题有朋友帮忙解答一下吗?
数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
作者:
毅心缘
时间:
2014-7-6 22:15
我这个写的不好。你参考一下吧
import java.util.*;
public class Test1 {
public static void main(String[] args) {
// 原数组
int[] arr = { 4,2,4,6,1,2,4,7,8 };
// 定义一个list集合
List al = new ArrayList();
// 对数组进行遍历
for (Integer a : arr) {
// 添加到list集合中
al.add(a);
}
// 打印没有去重的list集合
sop("al=" + al);
// 打印去重后的list集合
List list = quchong(al);
sop("newAl=" + list);
// 对list集合进行迭代
Iterator it = list.iterator();
System.out.print("去重后的数组=" + "{");
for (int i = 0; i < list.size(); i++) {
if (i != list.size() - 1)
System.out.print(it.next() + ",");
else
System.out.println(it.next() + "}");
}
}
public static List quchong(List al) {
// 定义一个临时的list集合,存储去重后的list集合
List newAl = new ArrayList();
// 迭代
Iterator it = al.iterator();
while (it.hasNext()) {
Object obj = it.next();
if (!newAl.contains(obj))
newAl.add(obj);
}
return newAl;
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
复制代码
作者:
一只特立独行的猪
时间:
2014-7-6 22:34
我会告诉你我基础测试也有这题吗?
package com.itheima;
public class Test5 {
/**
* 5、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
* @author QWY
*/
/*
思路:
定义一个新的数组,每添加一个元素前先判断是否存在
*/
public static void main(String[] args) {
// 定义两个整型数组,src为原数组,res为消去重复后的数组
int[] src = {4,2,4,6,1,2,4,7,8}, res;
// len为原数组的长度,count为消去重复后的数组的长度
int len = src.length, i = 0, j = 0, count = 1;
res = new int[len];
// 将原数组第一个元素放到res中
res[0] = src[0];
for(i = 1;i < len;i++){
// 定义一个标志,用来判断当前元素是否已存在
boolean flag = true;
for(j = 0;j < count;j++){
// 若当前元素存在则置flag为false并跳出本次循环
if(src[i] == src[j]){
flag = false;
break;
}
}
// 如果当前元素不存在则加入到res中
if(flag)
res[count++] = src[i];
}
// 打印出消除重复元素后的数组
for(i = 0;i < count;i++)
System.out.print(" "+res[i]);
}
}
复制代码
作者:
790324255a
时间:
2014-7-6 23:07
本帖最后由 790324255a 于 2014-7-6 23:08 编辑
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class Test1 {
public static void main(String[] args) {
/**
* 5、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
*
* @author QWY
*/
int[] arr = { 4, 2, 4, 6, 1, 2, 4, 7, 8 };
List<Integer> list = new ArrayList<Integer>();
for (int i : arr) {
list.add(i);
}
Set<Integer> set = new LinkedHashSet<Integer>(list);
int[] sort = new int[set.size()];
int j = 0;
for (int i : set) {
sort[j] = i;
j++;
}
for (int y = 0; y < sort.length; y++) {
if (y == 0)
sop("{" + sort[y] + ",");
else if (y == sort.length - 1)
sop(sort[y] + "}");
else
sop(sort[y] + ",");
}
}
public static void sop(Object o) {
System.out.print(o);
}
}
我是这样解决的 利用list集合可存在重复元素 set集合不允许存在重复元素 用list跟set集合间的转换来排除重复元素
作者:
gtf
时间:
2014-7-7 09:03
毅心缘 发表于 2014-7-6 22:15
我这个写的不好。你参考一下吧
太感谢了 辛苦了
作者:
m529031854
时间:
2014-7-7 09:26
public class quchong {
public static void main(String[] args) {
int arr[]={4,2,4,6,1,2,4,7,8};
Set set =new HashSet();
for(int i=0;i<arr.length;i++){
if(!set.contains(arr[i])){
set.add(arr[i]);
}
}
System.out.println(set);
}
}
复制代码
打印结果:[1, 2, 4, 6, 7, 8]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2