关于java 中LIST对象转存?

本人初学JAVA 有个小问题
有个LIST对象,有a,b,c,d,e五个元素都为string类型
有值为:{aa,11,name1,bb,cc},
{aa,11,name2,bb,cc},
{aa,12,name1,bb,cc},
{aa,12,name2,bb,cc},
如果要把它转变为另个LIST.也有5个元素,其中c元素为一个LIST对象,
转变方法为a,b元素相同条件下将c元素变为LIST对象。
即:{aa,11,{name2},bb,cc},
{aa,12,{name1,name2},bb,cc},
请问该如何实现,哪位牛人给个实现方法,谢谢
[b]问题补充:[/b]
lovewhzlq老兄:你写得判断的方法我试了可以了,但是可以把给新的LIST赋值的代码写下吗?谢谢~~~~~~~~~~ :x
[b]问题补充:[/b]
最关键就是把要变成LIST的那个元素的赋值写法

[code="java"]
import java.util.*;

public class ListTest {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<List<String>> list = new ArrayList<List<String>>();

    List<String> l1 = new ArrayList<String>();
    l1.add("aa");
    l1.add("11");
    l1.add("name1");
    l1.add("bb");
    l1.add("cc");

    List<String> l2 = new ArrayList<String>();
    l2.add("aa");
    l2.add("11");
    l2.add("name2");
    l2.add("bb");
    l2.add("cc");

    List<String> l3 = new ArrayList<String>();
    l3.add("aa");
    l3.add("12");
    l3.add("name1");
    l3.add("bb");
    l3.add("cc");

    List<String> l4 = new ArrayList<String>();
    l4.add("aa");
    l4.add("12");
    l4.add("name2");
    l4.add("bb");
    l4.add("cc");

    list.add(l1);
    list.add(l2);
    list.add(l3);
    list.add(l4);

    List<List> result = new ArrayList<List>();
    List<Integer> hasVisited = new ArrayList<Integer>();
    for (int i = 0; i < list.size(); i++) {
        if(hasVisited.contains(i))
        {
            continue;
        }
        List tempi = list.get(i);
        List item = new ArrayList();
        List c = new ArrayList();
        item.add(tempi.get(0));
        item.add(tempi.get(1));
        c.add(tempi.get(2));
        for (int j = i + 1; j < list.size(); j++) {
            List tempj = list.get(j);

            if (tempi.get(0).equals(tempj.get(0))
                    && tempi.get(1).equals(tempj.get(1))) {
                c.add(tempj.get(2));    
                hasVisited.add(j);
            }

        }
        item.add(c);
        item.add(tempi.get(3));
        item.add(tempi.get(4));

        result.add(item);
    }

    System.out.println(result);
    System.out.println(hasVisited);

}

}

[code]

List> list
= /*{aa,11,name1,bb,cc},
{aa,11,name2,bb,cc},
{aa,12,name1,bb,cc},
{aa,12,name2,bb,cc},
*/

List result = new ArrayList();
for(int i=0;i<list.size();i++)
{
List tempi = list.get(i);
for(int j=i+1;j<list.size()ji++)
{
List tempj = list.get(i);
if(tempi.get(0).equals(tempj.get(0)) && tempi.get(1).equals(tempj.get(1)))
//.......

}