黑马程序员技术交流社区
标题:
求助!!!走过路过,进来看看啊
[打印本页]
作者:
wuyusi
时间:
2015-5-30 18:33
标题:
求助!!!走过路过,进来看看啊
有一个数组,假设是{1,2,3,1,3,4,5,6,7,7,8},要求如下:
1. 将重复的去掉
2. 将重复的打印,格式 xxx重复出现了xx次
作者:
想要那片海
时间:
2015-5-30 18:58
用集合做比较方便,因为要获取每个元素对应的出现次数,可以在遍历数组的时候把元素和出现的次数的对应关系存入Map集合,然后去除集合中次数不为1的键值关系
作者:
想要那片海
时间:
2015-5-30 19:29
import java.util.*;
public class GetSingleNumber {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr={1,2,3,1,3,4,5,6,7,7,8};
ArrayList<Integer> single=getSingleNumber(getMap(arr));
System.out.println(single);
}
//将数组中的数据和出现次数存入Map集合
public static Map<Integer,Integer> getMap(int[] arr)
{
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
int len=arr.length;
for(int x=0;x<len;x++)
{
int count=0;
Integer value=map.get(arr[x]);//获取该元素的集合中的次数
if(value!=null)
count=value;
count++;
map.put(arr[x], count);//将元素和对应的出现次数写入集合
}
return map;
}
public static ArrayList<Integer> getSingleNumber(Map<Integer,Integer> map)
{
//将集合的对应关系存入set集合
Set<Map.Entry<Integer, Integer>> set=map.entrySet();
//获取Set集合的迭代器对象
Iterator<Map.Entry<Integer, Integer>> it=set.iterator();
//定义一个新的集合用来存储出现次数仅为1的元素
ArrayList<Integer> list=new ArrayList<Integer>();
while(it.hasNext())
{
Map.Entry<Integer, Integer> me=it.next();//迭代获取元素对应关系
Integer key=me.getKey();//获取对应关系中的键,也就是元素
Integer value=me.getValue();//获取值,也就是出现的次数
if(value.equals(1))//如果出现次数为1,将这个元素(键)存入List集合
{
list.add(key);
}
}
return list;
}
}
复制代码
作者:
as604049322
时间:
2015-5-30 21:26
@Test
public void test(){
int[] arr=new int[]{1,2,3,1,3,4,5,6,7,7,8};
Map<Integer, Integer> map=new HashMap<>();
for(int i:arr){
Integer count = map.get(i);
if(count==null)
map.put(i, 1);
else
map.put(i, count+1);
}
for(Entry<Integer, Integer> entry:map.entrySet()){
System.out.println(entry.getKey()+"出现了"+entry.getValue()+"次");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2