【问题标题】:How to convert from arraylist to array如何从数组列表转换为数组
【发布时间】:2013-06-01 16:29:12
【问题描述】:

我有三种排序方法,分别是sortTitle()sortYear()sortSinger()。它们都采用arraylist 形式,因为它们将排序arraylist,但我的老师说我需要常规array 形式。我修复了我的整个程序,但这部分我不知道我将如何使其成为常规或我必须改变什么。以下是方法。

public static void sortTitles(ArrayList<Music2> music)
    {
       int y;
       Music2 temp = new Music2("",0,"");

       for(int x = 1; x<music.size(); x++)
       {
            temp.equals(music.get(x));
            y=0;
            for( y = x; y > 0; y--)
            {    
                if(temp.getTitle().compareTo(music.get(y-1).getTitle()) < 0)
                    music.get(y).equals(music.get(y-1));    
                else
                    break;
            }
            music.get(y).equals(temp);

       }      
    }    

    public static void sortSingers(ArrayList<Music2> music)
    {
       int y;
       Music2 temp = new Music2("",0,"");

       for(int x = 1; x<music.size(); x++)
       {
            temp.equals(music.get(x));
            y=0;
            for( y = x; y > 0; y--)
            {    
                if(temp.getSinger().compareTo(music.get(y-1).getSinger()) < 0)
                    music.get(y).equals(music.get(y-1));    
                else
                    break;
            }
            music.get(y).equals(temp);

       }      
    }

    public static void sortYears(ArrayList<Music2> music)
    {
       int y;
       Music2 temp = new Music2("",0,"");

       for(int x = 1; x<music.size(); x++)
       {
            temp.equals(music.get(x));
            y=0;
            for( y = x; y > 0; y--)
            {    
                if(temp.getYear() < music.get(y-1).getYear())
                    music.get(y).equals(music.get(y-1));    
                else
                    break;
            }
            music.get(y).equals(temp);

       }      
    }

【问题讨论】:

  • 您遇到了什么问题?将方法更改为采用Music2[] 并将访问权限更改为myArray[i] 而不是myArrayList.get(i)。另一方面,如果您将相同的代码复制并粘贴到 3 个位置并更改一行,您应该意识到出了点问题。也许看看Arrays.sort 是如何做到的,使用Comparator 作为回调。
  • 只需更改对 ArrayList 的每个引用以获取对数组的引用,并将每个 addget 更改为对应的数组[索引]。
  • 这并没有太大帮助。它没有告诉我是否需要更改什么内容,我更改了包含所有名称和内容的数组列表,我只需要更改这些方法。 @mre
  • .size() 怎么样? @BoristheSpider

标签: java arrays sorting arraylist


【解决方案1】:
public static void sortYears(Music2[] musics)
{
   int y;
   Music2 temp = new Music2("",0,"");

   for(int x = 0; x<musics.length; x++)
   {
        for( y = 1; y < musics.length-x; y++)
        {    
            if(musics[x].getYear() > musics[y-1].getYear()) {
                swap(x, y, musics);
            }
        }
   }      
}

private static void swap(int a, int b, Object[] arr) {
    Object temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}

这就是 1 你可以做剩下的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-02
    • 2020-01-24
    • 2014-03-13
    • 2018-09-07
    • 2011-08-13
    • 2013-05-17
    • 2021-06-09
    • 2012-04-04
    相关资源
    最近更新 更多