catong 2011-07-04 20:38
浏览 304
已采纳

项目中遇到的算法问题

本人碰到一个比较棘手的算法问题,问题描述如下:一个arrayList中含有若干个对象,每个对象有两个属性和content,要求如下:只要title或者content其中一个相同,则认为是相同对象,输出排重后的对象(相同对象输出其中一个即可)和重复和个数
Class A {
String title,
String content
};

ArrayList arrayList = new ArrayList();
A a1 = New A();
a1.title = T1;
a1.content = C1;
arrayList.add(a1);

A a2 = New A();
a2.title = T1;
a2.content = C2;
arrayList.add(a2);

A a3 = New A();
a3.title = T2;
a3.content = C2;
arrayList.add(a3);

A a4 = New A();
a4.title = T2;
a4.content = C1;
arrayList.add(a4);

A a5 = New A();
a5.title = T5;
a5.content = C5;
arrayList.add(a5);

最后程序运行完成后,输出 a1(4),a5(1)
程序解释:a1、a2、a3、a4是相同对象,原因:a1.title = a2.title,a2.content = a3.content,a4.title = a3.title,
哪位帮忙写一下代码或者思路

  • 写回答

6条回答 默认 最新

  • weixin_42298602 2011-07-05 00:29
    关注

    package com.auto.main;

    import java.util.ArrayList;
    import java.util.List;

    public class Test {

    public static void main(String... strings){
    
        ArrayList<A> arrayList = new ArrayList<A>();
        A a1 = new A(); 
        a1.title = "T1"; 
        a1.content = "C1"; 
        arrayList.add(a1); 
    
        A a2 = new A(); 
        a2.title = "T1"; 
        a2.content = "C2"; 
        arrayList.add(a2); 
    
        A a3 = new A(); 
        a3.title = "T2"; 
        a3.content = "C2"; 
        arrayList.add(a3); 
    
        A a4 = new A(); 
        a4.title = "T2"; 
        a4.content = "C1"; 
        arrayList.add(a4); 
    
        A a5 = new A(); 
        a5.title = "T5"; 
        a5.content = "C5"; 
        arrayList.add(a5); 
    
        Test t = new Test();
        //System.out.println(t.get(arrayList));
        List<List<A>> llist = t.get(arrayList);
        for(List<A> l:llist){
            System.out.println("========start===========");
            for(A a : l){
                System.out.println(" a.content=" + a.content + ";a.title=" + a.title);
            }
            System.out.println("========end===========");
        }
    
    }
    /**
     * 
     * @param aList
     * @return
     */
    public List<List<A>> get(List<A> aList){
        List<List<A>> result = new  ArrayList<List<A>>();
    
        List<A> key = new ArrayList<A>();
        result.add(key);
    
        key.add(aList.get(0));
        aList.remove(0);
    
        aList= process(aList,result);
        while(!aList.isEmpty()){
            aList= process(aList,result);
        }
    
        return result;
    }
    
    List<A> process(List<A> aList,List<List<A>> result){
        List<A> key = result.get(result.size()-1);//最后一个
    
        for(int i=0;i<aList.size();i++ ){
            A m  = aList.get(i);
            for(A k : key){
                if(m.content.equals(k.content)||m.title.equals(k.title)){
                    key.add(m);
                    aList.remove(i);
                    return aList;
                }
            }
        }
    
        List<A> ss = new ArrayList<A>();
        ss.add(aList.get(0));
        aList.remove(0);
        result.add(ss);     
    
        return aList;
    }
    

    }

    /**
    无聊啊,把代码写了下
    */

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?