java,排序,循环移位,该如何处理

java,排序,循环移位
用java实现以下要求:
   每一行有个词组,将每一行的词组的第一个单词移位至该词组的末尾,形成新的一行,继续以上操作,直到不出现新的行。然后将所有的词组(最初的和后来移位形成的)按照首字母排序输出。
   
   举例说明:car god;dog home;bule shy.  
简述步骤
1.将car移至god后形成新的词组god car。
2.每一行按照第一步进行执行。
3.最后得到的词组有car god、dog home、bule shy、god car、home dog、shy bule。
4.按照首字母排序输出,输出的结果bule shy;car god;dog home;god car;home dog;shy bule。

求大神指教!
java 排序

------解决方案--------------------
先写吧,遇到问题再说,至少说一下自己的思路
------解决方案--------------------
代码如下,思路写了注释,如果哪个地方不懂,回复我下,代码贴出来,希望对楼主有用!
public String[] Show(String [] str){
//定义一个两倍长度与原数组的新数组用来存放进行操作后的数组
String [] str2 = new String[str.length * 2];

//将字符串数组进行遍历,并对每个字符串进行同样的操作
for (int i = 0; i < str.length; i++) {
//先将字符串用" "空格分隔成字符串数组
String s = str[i];
//将旧数组中的数据依次拷贝到新数组中
str2[i] = s;
String newstr = "";//进行变换后的新字符串

String [] sr = s.split(" ",2);//以空格分隔成字符串数组
//将数组进行遍历并得到一个新的字符串
for (int j = sr.length-1; j >= 0; j--) {
//如果是最后一个就不加" "
if(j == 0){
newstr += sr[j];
}else{
newstr += sr[j] + " ";
}
}
str2[str.length + i] = newstr;//将新的字符串存入数组
}

//将新的数组进行字典排序,利用冒泡的思想来做
for (int i = 0; i < str2.length-1; i++) {
for (int j = i+1; j < str2.length; j++) {
int num = str2[i].compareTo(str2[j]);//定义一个数表示字典排序的结果

if(num > 0){
//位置互换
String temp;//中间变量
temp = str2[i];
str2[i] = str2[j];
str2[j] = temp;
}
}
}

return str2;
}