首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一路集合练习题 大家来练习

2013-06-19 
一道集合练习题 大家来练习将B集合合并到A集合ListString listA new ArrayListString()ListString

一道集合练习题 大家来练习
将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;


        }

        //拼装后的新字符串
        String newStr = str + "001";

        //如果依然存在,需要递归调用
        if (listB.contains(newStr))
        {
            process(newStr, listB);
        }
        else
        {
            //不重复,则加入到list中
            listB.set(index, newStr);
        }
    }

    //判断是否在listA中存在
    private static boolean isContain(List<String> listA, List<String> listB)
    {
        for (String str : listB)
        {
            if (listA.contains(str))
            {
                return true;
            }
        }
        return false;
    }


[解决办法]
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");

addList(listA,listB);
System.out.println(listA);
}

private static void addList(List<String> listA, List<String> listB) {
for (int i = 0; i < listB.size(); i++) {
String str = listB.get(i);
String newStr = testSame(str,listA,listB);
listA.add(newStr);
}
}

private static String testSame(String str, List<String> listA,
List<String> listB) {
while(listA.contains(str) 
[解决办法]
 listB.contains(str)){
str = str+"001";
}
return str;
}

热点排行
Bad Request.