A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 学习代码 中级黑马   /  2014-3-23 23:32  /  1581 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

各位大侠 小弟问一个问题,就是说我现在要去除数组里面相同的元素,
思路;
把数组里面的元素转换成字符串对象,存储到集合中去,在利用迭代器把里面的元素取出来,
在定义一个新的集合,利用contains 方式,判断 新定义的集合当中是不是包含,里面取出来的元素,
不包含的话,就把取出来的元素,添加到新的集合当中,最后在迭代新的集合

想问这样思考是不是可以的

8 个回复

倒序浏览
我觉得不如把数组中的元素取出来存入set接口的集合中,因为set本身元素不能重复,相同的元素就存不进去,这样也可以实现去除重复元素的效果,
小弟拙见,仅供参考
回复 使用道具 举报
霍振鹏 发表于 2014-3-23 23:45
我觉得不如把数组中的元素取出来存入set接口的集合中,因为set本身元素不能重复,相同的元素就存不进去,这 ...

谢谢 朋友  应该是可以的 呵呵  我也是才开始学习的 不是很了解
回复 使用道具 举报
  1. */
  2. //利用两个数组,一个数组存储原始数组,另个数组存储去重后的结果
  3. public class Test7 {
  4.        
  5.         public static void main(String[] args){
  6.                 int[] arr1 = new int[]{4,2,4,6,1,2,4,7,8};
  7.                 int[] arr2 = new int[arr1.length];
  8.                 System.out.print("Array{");
  9.                 //打印旧数组
  10.                 for(int i=0;i<arr1.length;i++){
  11.                     System.out.print(arr1[i]+",");
  12.                 }
  13.                 System.out.print("}\n");
  14.                
  15.                 int index = 0;
  16.                 boolean flag = true;
  17.                 //
  18.                 for(int i = 0;i < arr1.length;i++){
  19.                         for(int j = 0;j < index+1;j++){
  20.                                 if(arr1[i] == arr2[j]){
  21.                                         flag = false;
  22.                                 }
  23.                         }
  24.                         //flag为真给arr2赋值
  25.                         if(flag){
  26.                                 arr2[index]=arr1[i];
  27.                                 index++;
  28.                         }
  29.                         flag=true;
  30.                 }
  31.                
  32.                 System.out.print("newArray:{");
  33.                
  34.                 for(int i=0;i<index;i++){
  35.                         System.out.print(arr2[i]+",");
  36.                 }
  37.                 System.out.print("}");
  38.         }
  39. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报

恩   谢谢朋友  你的做法是正确的  
回复 使用道具 举报
如果用数组处理,数组建立后长度是不能变化的
3楼板凳的方法,如果旧数组中有个0 怎么办????????
所以考虑用集合或者字符串的方式去处理吧
回复 使用道具 举报
tcny 中级黑马 2014-3-24 10:00:53
7#
本帖最后由 tcny 于 2014-3-24 10:02 编辑
  1. <div class="blockcode"><blockquote>public class Test {
  2.         public static void main(String[] args) {

  3.                 int[] src = {1, 1, 2, 3, 4, 3, 10, 1};
  4.                 ArrayList<Integer> arr = new ArrayList<>();
  5.                
  6.                 for(int i = 0; i < src.length; i++){
  7.                         if(isContains2(src[i], arr)){
  8.                                 continue;
  9.                         }
  10.                         arr.add(src[i]);
  11.                 }
  12.                 System.out.println(arr);
  13.         }
  14.         //判断是否存在于数组中
  15.         public static boolean isContains2(int num, ArrayList<Integer>arr){
  16.                 for(int i = 0; i < arr.size(); i++){
  17.                         if(num == arr.get(i))
  18.                                 return true;
  19.                 }
  20.                 return false;
  21.         }
  22. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
个人建议使用hashset集合。然后创建一个业务bean,在业务bean里面实现equals和hashcode方法。
回复 使用道具 举报
探花 中级黑马 2014-3-25 22:56:19
9#
可以通过 set 集合的方式

import java.util.LinkedHashSet;
import java.util.Set;

/*
* 当给定数据想取重复时,首先判断数据是独立存在还是成对出现
* 以此题为例数据独立存在选择set集合,考虑想把数据只是单纯去重复,
* 即"怎么进怎么出";选择LinkedHashSet集合即可。
*/

public class ArrayDemo {
        public static void main(String[] args) {
                //给定数组
                int[] arr ={6,9,8,4,6,8,4,5,2,7};
                //建立集合
                Set<Integer> set = new LinkedHashSet<Integer>();
                //创建元素并添加
                for(int i : arr) {
                        set.add(i);
                }
                //打印集合
                System.out.println(set);
               
        }

}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马