日期:2014-05-19  浏览次数:20878 次

java数组合并且内容不重复
有2个字符串,每个字符串中存储的是若干个邮件地址(用分号【;】隔开的)。
其中第一字符串作为默认的邮件收件人,如:111111@qq.com;222222@qq.com,
第二个字符串初始值和第一个字符串值相同,但用户可以对第二个字符串可以修改,可以增加邮件地址,或是删除邮件地址,最终把这两个字符串的邮件地址合并,但合并后不能重复。
目前本人是将两个串根据【;】将分割,对两个数组进行遍历,将第二个数组与第一数组的值比较,没有重复的就追加,但如果第一个串是111111@qq.com;222222@qq.com,第二个串是111111@qq.com,即比第一个串少了,如何合并,还有如果第二个串是111111@qq.com;333333@qq.com;555555@qq.com有怎么合并,求代码示例!!!  


------解决方案--------------------
你可以把他们全部拆成由一个个邮件地址组成的数组,然后数组内部循环比较 取出不同的项 最后留下的就是你想要的

String[] args = {111111@qq.com,333333@qq.com,555555@qq.com ...}
------解决方案--------------------
Java code
    public static void main(String[] args) {
        
        String s1 = "111111@qq.com;222222@qq.com";
        String s2 = "111111@qq.com;333333@qq.com;555555@qq.com";
        
        Set<String> set = new TreeSet<String>();
        
        for(String s : s1.split(";"))
            set.add(s);
        for(String s : s2.split(";"))
            set.add(s);
        
        System.out.print(Arrays.toString(set.toArray()));
    }

------解决方案--------------------
[Quote=引用:]

Java code
 public static void main(String[] args) {
        
        String s1 = "111111@qq.com;222222@qq.com";
        String s2 = "111111@qq.com;333333@qq.com;555555@qq.com";
        
        Set<String> set = new HashSet<String>();
        
        for(String s : s1.split(";"))
            set.add(s);
        for(String s : s2.split(";"))
            set.add(s);
        
        System.out.print(Arrays.toString(set.toArray()));
    }

------解决方案--------------------
2楼正解啊 用SET去重就可以了啊
------解决方案--------------------
探讨

引用:
[Quote=引用:]
并不是把s2的直接追加到s1里,是先比较s1和s2里是否有共同的,如果有则继续保留,若s2中有,s1中没有,则说明是新增的,要保留;若s1中有,s2中没有了,则说明s2中把原来(s1)中的(222222@qq.com)地址给去掉了,我现在纠结的就是这,追加好追加,删掉之前地址有点麻烦!