日期:2014-05-20  浏览次数:20744 次

一道集合练习题 大家来练习
将B集合合并到A集合
List<String> listA = new ArrayList<String>();
List<String> listB = new ArrayList<String>();

listA.add("A");
listA.add("A001");
listA.add("A001001");

listB.add("A001");
listB.add("A001001");
listB.add("A001001001");



 如果B集合中有元素同A集合中某元素相同 再在后面加001,然后再在A,B集合查看是否相同,相同加001 ,直到不相同。

------解决方案--------------------

    public static void main(String[] args)
    {
        List<String> listA = new ArrayList<String>();
        List<String> listB = new ArrayList<String>();

        listA.add("A");
        listA.add("A001");
        listA.add("A001001");

        listB.add("A001");
        listB.add("A001001");
        listB.add("A001001001");

        //最终保证listB中的字符串全部在listA中不存在
        while (isContain(listA, listB))
        {
            for (String str : listB)
            {
                //存在相同,则+001处理
                if (listA.contains(str))
                {
                    //处理之前要保证+001在B中不重复
                    process(str, listB);
                }
            }
        }
        
        listA.addAll(listB);
        System.out.println(listA);
    }

    private static void process(String str, List<String> listB)
    {
        //获取下标
        int index = listB.indexOf(str);

        //下标小于0,则退出
        if (index < 0)
        {
            return;