如何在Java中按字母顺序组织对象数组
我试图模拟一个唱片库。但我也可以按作者姓名的字母顺序组织图书馆的内容。关于如何按字母顺序组织对象数组的内容,有什么帮助吗 我创建了一个名为Album的类,用于创建对象如何在Java中按字母顺序组织对象数组,java,arrays,sorting,object,Java,Arrays,Sorting,Object,我试图模拟一个唱片库。但我也可以按作者姓名的字母顺序组织图书馆的内容。关于如何按字母顺序组织对象数组的内容,有什么帮助吗 我创建了一个名为Album的类,用于创建对象 public class Album { private String author; private String name; private String year; public Album(String a, String n, String y) { // constructor
public class Album {
private String author;
private String name;
private String year;
public Album(String a, String n, String y) { // constructor
author = a;
name = n;
year = y;
}
public String toString()
{
return author +","+ name + "," + year;
}
}
类集合用于将对象存储到数组中
public class AlbumCollection {
public Album collection[]= new Album[10];
private int numAlbums = 0;
public void add (Album a){
if (numAlbums >= collection.length){
Album newcollection[]= new Album [collection.length * 2];
for (int n = 0; n < numAlbums; n ++){
newcollection[n] = collection[n];
}
newcollection = collection;
}
collection[numAlbums] = a;
numAlbums = numAlbums + 1;
}
public String toString()
{
String details = "";
for ( int p = 0; p < collection.length ; p ++)
{
details = details + collection[p] + "\n" ;
}
details += "\n";
return details;
}
}
我不得不将compareTo方法改为按作者排序
public class Album {
private String author;
private String name;
private String year;
public Album(String a, String n, String y) { // constructor
author = a;
name = n;
year = y;
}
public String toString()
{
return author +","+ name + "," + year;
}
public int compareTo(Album a) {
// usually toString should not be used,
// instead one of the attributes or more in a comparator chain
return author.compareTo(a.author);
}
}
我将方法sort添加到数组的排序元素中:
public class Collection {
public Album collection[]= new Album[10];
private int numAlbums = 0;
public void Add (Album a){
if (numAlbums >= collection.length){
Album newcollection[]= new Album [collection.length * 2];
for (int n = 0; n < numAlbums; n ++){
newcollection[n] = collection[n];
}
newcollection = collection;
}
collection[numAlbums] = a;
numAlbums = numAlbums + 1;
}
public String toString()
{
String details = "";
for ( int p = 0; p < numAlbums ; p ++)
{
details = details + collection[p] + "\n" ;
}
details += "\n";
return details;
}
public void sort(){
for(int i=0;i<numAlbums;i++){
for(int j=i;j<numAlbums-1;j++){
if(collection[j].compareTo(collection[j+1])>0){
Album tmp =collection[j];
collection[j]=collection[j+1];
collection[j+1]=tmp;
}
}
}
}
如果这个问题不是以下问答的重复,那么它至少显示了如何统计:问题是我不想使用列表你必须使用列表或类似的东西
Collection
是一个接口,您不能在其上调用new
。您想通过生成一些函数对其进行排序吗?首先,您应该遵循Java命名约定。编写自己的名为Collection
的类真是个糟糕的主意,因为它是JDK中的一个接口。将其重命名为类似于AlbumCollection
。您的命名方法也应该以小写开头,因此public void Add(相册a)
必须重命名为public void Add(相册a)
。顺便说一句,与你的问题相关的东西可以很容易地编码。
public class Collection {
public Album collection[]= new Album[10];
private int numAlbums = 0;
public void Add (Album a){
if (numAlbums >= collection.length){
Album newcollection[]= new Album [collection.length * 2];
for (int n = 0; n < numAlbums; n ++){
newcollection[n] = collection[n];
}
newcollection = collection;
}
collection[numAlbums] = a;
numAlbums = numAlbums + 1;
}
public String toString()
{
String details = "";
for ( int p = 0; p < numAlbums ; p ++)
{
details = details + collection[p] + "\n" ;
}
details += "\n";
return details;
}
public void sort(){
for(int i=0;i<numAlbums;i++){
for(int j=i;j<numAlbums-1;j++){
if(collection[j].compareTo(collection[j+1])>0){
Album tmp =collection[j];
collection[j]=collection[j+1];
collection[j+1]=tmp;
}
}
}
}
public static void main(String[] args) {
Collection c = new Collection();
c.Add( new Album("DaftPunk","Discovery","2001"));
c.Add( new Album ("Pink Floid","The Dark Side Of The Moon","1973"));
c.Add( new Album( "The Clash", "London Calling", "1979"));
c.sort();
System.out.print(c);
}