我有一个类似于:
的字符串数组[module-src1, module-src2, module-src3, ..., source1, source2, source3, ...]
我想将此数组重新排序为:
[source1, source2, source3, ..., module-src1, module-src2, module-src3, ...]
在Java中执行此操作的最有效方法是什么?
我考虑过有2个队列来存储每个队列,但这看起来过于复杂,我希望看看是否有更有效的方法来做到这一点。
答案 0 :(得分:1)
我能想到的最好方法就是拥有自己喜欢的课程
public class Source implements Comparable<Source> {
private String name;
public Source(String name){
this.name = name;
}
public String getName(){
return name;
}
@Override
public String toString(){
return name;
}
@Override
public int compareTo(Source another) {
//do whatever sorting you want here
//for example:
if(name.subString(0,5).equalsIgnoreCase("module") &&
another.getName().subString(0,5).equalsIgnoreCase("module"){
//both start with module, so alphabetize
return name.compareTo(another.getName());
} else if(name.subString(0,5).equalsIgnoreCase("module") &&
!another.getName().subString(0,5).equalsIgnoreCase("module"){
//only this one starts with "module", the other one comes first
return -1;
}
...
}
}
希望你能得到这个要点。
在ArrayList
或其他内容中拥有所有这些对象后,只需执行Collections.sort(myArray)
,然后按照您想要的顺序对其进行排序
答案 1 :(得分:0)
您必须对输入做出一些假设(也就是说,您必须假设数组中的所有字符串都被格式化为“module - ” - 或“source”-prefixed)。如果是这种情况,那么你可以这样做:
<form action= "handle_reg.php" method= "post">
<p>First Name: <input type= "text" name= "first_name" size= "20" /></p>
<p>Last Name: <input type= "text" name= "last_name" size= "20" /></p>
<p>Email address: <input type= "text" name= "email" size= "20" /></p>
<p>Password: <input type= "password" name= "password" size= "20" /></p>
<p>Please confirm your password: <input type= "password" name= "confirm" size= "20" /></p>
<p>Favourite color: <input type= "text" name= "color" size= "5" /></p>
<!--Script continues but these are the lines which mattered-->
答案 2 :(得分:0)
如果要保留具有最少行代码的String数组:
List<String> myList = new ArrayList<>(Arrays.asList(myArray))
Collections.sort(myList);
myArray = myList.toArray(new String[0]);
我建议使用List而不是数组,这会将其归结为一行代码:
Collections.sort(myList);