[英]Sorting objects in alphabetical order
對於我的作業,我必須創建一個方法來對存儲在對象類中的整數和字符串進行排序。 請記住,我必須使用CASTS。 我想使用泛型,但是我的老師使用1.4.2(沒有泛型)對我進行INSISTTS。 我可以對時間進行排序,對於字母排序,我使用我的方法對時間進行排序並添加了compareTo。 我玩了一點,但是當我輸出它時,它按照輸入順序給了我輸入的所有內容。 不是按字母順序。
這是我創建的用於存儲輸入的類:
public class showInfo
{
String name;
String day;
int time;
}
以下是按名稱排序的方法!
//method to sort and display info
public static void sortName(){
for(int i = 0; i < show.size() - 1; i++) {
for(int j = 0; j < show.size() - 1; j++){
if(((showInfo)show.get(i)).name.compareTo(((showInfo)show.get(i+1)).name) > 0){
showInfo temp = new showInfo();
temp.name = ((showInfo)show.get(j)).name;
temp.day = ((showInfo)show.get(j)).day;
temp.time = ((showInfo)show.get(j)).time;
((showInfo)show.get(j)).time = ((showInfo)show.get(i)).time;
((showInfo)show.get(j)).day = ((showInfo)show.get(i)).day;
((showInfo)show.get(j)).name = ((showInfo)show.get(i)).name;
((showInfo)show.get(i)).time = temp.time;
((showInfo)show.get(i)).day = temp.day;
((showInfo)show.get(i)).name = temp.name;
}
}
}
任何幫助將是巨大的! 提前致謝。 :)
(PS。我知道我需要將“ showInfo”更改為“ ShowInfo”,但是我會在完成后執行。)
代碼的一個問題是,您正在將show.get(i)
與show.get(i+1)
,然后將show.get(i)
與show.get(j)
進行交換。 您應該將其與show.get(j)
進行比較。 另外,內部循環應轉到j < show.size()
而不是show.size() - 1
。 最后,您可以從i + 1
而不是0
開始內部循環。
一旦確定需要交換,您可以通過交換列表中的引用而不是交換每個字段來做得更好:
showInfo tmp = (showInfo)show.get(i);
show.set(i, show.get(j));
show.set(j, tmp);
我認為show
是一個List
,您必須按name
排序。
首先,使showInfo
實現Comparable
:
public class showInfo implements Comparable
{
String name;
String day;
int time;
public int compareTo(Object o)
{
showInfo other = (showInfo) o;
return name.compareTo(other.name);
}
}
然后,在列表上使用`Collections.sort()' :
Collections.sort(show);
您在這里錯誤地使用了i
:
if(((showInfo)show.get(i)).name.compareTo(((showInfo)show.get(i+1)).name) > 0){
我相信第二個i
應該是j
來實現冒泡排序
if(((showInfo)show.get(i)).name.compareTo(((showInfo)show.get(j+1)).name) > 0){
你可以做這樣的事情。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class myComparator implements Comparator {
public int compare(Object o1, Object o2) {
return ((o1.toString().charAt(0) > o2.toString().charAt(0)) ? 1 : (o1
.toString().charAt(0) == o2.toString().charAt(0)) ? 0 : -1);
}
}
public class Sample {
/**
* @param args
*/
public static void main(String[] args) {
List l = new ArrayList();
l.add("hello");
l.add("abc");
l.add("World");
l.add("hi");
System.out.println("Before sorting");
for (Object i : l) {
System.out.println(i.toString());
}
Collections.sort(l, new myComparator());
System.out.println("After sorting");
for (Object i : l) {
System.out.println(i.toString());
}
}
}
不知道這是否是您要查找的內容,無論如何,它使用強制轉換而不是泛型 ,希望對您有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.