import java.util.*; public class test { static String[] m_Data = { "A", "B", "C", "D", "E" }; static ArrayList[] set=new ArrayList[5]; public static void GetString(LinkedHashMap<String, Integer> dd, int count, ArrayList[] set) { LinkedHashMap<String, Integer> dic = new LinkedHashMap<String, Integer>(); Set<String> keySet=dd.keySet(); Object[] keyArray=keySet.toArray(); for(int i=0; i<dd.size(); i++) { for (int j = dd.get((String)keyArray[i]) + 1; j < m_Data.length; j++) { String temp=((String)keyArray[i]).concat(m_Data[j]); //两个字符串连接 set[count].add(temp); //将temp放入第count个向量集合中 dic.put(temp, j); } } count++; if(dic.size()>0) GetString(dic, count, set); //生成下一个向量集合 } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //向量数组的初始化 for(int i=0; i<set.length; i++) set[i]= new ArrayList<String>(); LinkedHashMap<String, Integer> dic = new LinkedHashMap<String, Integer>(); for (int i = 0; i < m_Data.length; i++) { dic.put(m_Data[i], i); //将初始字符串放入dic中,为以后的迭代做好准备 set[0].add(m_Data[i]); //将初始字符串放入集合数组的第一个集合中 } //产生从第1个开始的向量集合 int count=1; GetString(dic, count, set); //输出向量集合数组中所有元素 for(int i=0; i<set.length; i++) { for(int j=0; j<set[i].size(); j++) { System.out.println(set[i].get(j)); } System.out.println("*******************"); } System.out.println(); } }