我有一个ArrayList,里面有几个简单的用户对象,其中包含ID,名称和密码等信息:
user1 = new User(19, "bsmith", "password");
user2 = new User(15, "jbrown", "password");
user3 = new User(23, "sgreen", "password");
userArray.add(person1);
userArray.add(person2);
userArray.add(person3);
我正在尝试使用我发现的冒泡排序方法按用户ID对它们进行排序:
public static void BubbleSort( int [ ] num )
{
int j;
boolean flag = true;
int temp;
while ( flag )
{
flag= false;
for( j=0; j < num.length -1; j++ )
{
if ( num[ j ] > num[j+1] )
{
temp = num[ j ];
num[ j ] = num[ j+1 ];
num[ j+1 ] = temp;
flag = true;
}
}
}
}
我根本不知道如何在我的ArrayList上实际使用它。我设法让它对常规数组进行排序:
int j[] = {10,30,20,50};
People p = new People();
p.BubbleSort(j);
for (int i = 0; i < j.length; i++) {
System.out.println(j[i]);
}
我的问题:是否可以直接在我的ArrayList中的每个用户的ID上使用冒泡排序,或者我是否必须以某种方式将每个用户的ID放入另一个数组并对其使用冒泡排序方法?
答案 0 :(得分:0)
您找到的方法只能用于arrays个int值:int[]
,您所拥有的ArrayList User
个对象:{{1 }}。因此,您需要对其进行一些更改才能将其用于ArrayList。
首先签名,改变
ArrayList<User>
到
public static void BubbleSort( int [ ] num )
然后,为了访问单个元素,您无法使用索引运算符,您需要使用ArrayList的get和set方法。
Sin方法是静态的,你不必创建一个实例来调用它,只需使用类名:
public static void BubbleSort( ArrayList<User> userList )
最后请注意,最好使用接口来声明数据类型。因此,对于ArrayList,您可以使用List接口行,以便:
People.BubbleSort( userArray );
和
List<User> userArray = new ArrayList<>();
另外请考虑Java naming convention方法和变量,它们应始终以小写字母开头。
public static void BubbleSort( List<User> userList )
答案 1 :(得分:0)
这是一个如何更改方法以对整数ArrayList进行排序
的示例public static void BubbleSort( ArrayList<Integer> num )
{
int j;
boolean flag = true;
int temp;
while ( flag )
{
flag= false;
for( j=0; j < num.size() - 1; j++ )
{
if ( num.get(j) > num.get(j+1) )
{
temp = num.get(j);
num.set(j, num.get(j+1));
num.set(j + 1, temp);
flag = true;
}
}
}
}
现在您只需将其更改为user.age进行比较,例如
if ( num.get(j).getAge() > num.get(j+1).getAge() )
不确定User class的接口是什么
答案 2 :(得分:0)
我建议你在用户类中创建一个getID()方法,该方法返回String ID。
private String id;
public String getID() {
return id;
}
然后只需调用getID并通过对字符串
进行排序来对用户进行排序