Java 我应该如何根据ArrayList中包含的一些整数对其进行排序?
这显然不是我的作品,而是一个例子。 我已经在使用Comparable、compareTo、compare、Collections、sort等方面工作了两个多小时。 这并不涉及对附加到它们的字符串进行排序,但是第一个数字应该与其各自的单词保持一致。ArrayList必须保持完整,但我已经用尽了我所知道的所有其他可能性Java 我应该如何根据ArrayList中包含的一些整数对其进行排序?,java,sorting,arraylist,Java,Sorting,Arraylist,这显然不是我的作品,而是一个例子。 我已经在使用Comparable、compareTo、compare、Collections、sort等方面工作了两个多小时。 这并不涉及对附加到它们的字符串进行排序,但是第一个数字应该与其各自的单词保持一致。ArrayList必须保持完整,但我已经用尽了我所知道的所有其他可能性 6 Worda 8 Wordb 7 Wordc 20 Wordd 2 Worde 5 Wordf 1 Wordg 10
6 Worda
8 Wordb
7 Wordc
20 Wordd
2 Worde
5 Wordf
1 Wordg
10 Wordh
1 Wordi
2 Wordj
新的ArrayList类似于:
1 Wordi
1 Wordg
2 Wordj
2 Worde
5 Wordf
6 Worda
8 Wordb
7 Wordc
10 Wordh
20 Wordd
Comparable
比较(…)
方法你说, 这显然不是我的作品,但它的一个例子
如果您需要更具体的帮助,请考虑发布您的实际代码和它应该保存的实际数据。
编辑您发布的内容:
public int compareTo(Team o) {
if (this.apps >= o.apps) {
return this.apps;
} else {
return o.apps;
}
}
如果可以的话,请解释一下
比如说
// assuming Team has an int field, score and a String field, name
public int compareTo(Team o) {
if (Integer.compare(score, o.score) != 0) {
// the scores are not the same, so return the comparison
return Integer.compare(score, o.score)
} else {
// the scores are the same, so compare the Strings:
return name.compareTo(o.name);
}
}
Comparable
比较(…)
方法你说, 这显然不是我的作品,但它的一个例子
如果您需要更具体的帮助,请考虑发布您的实际代码和它应该保存的实际数据。
编辑您发布的内容:
public int compareTo(Team o) {
if (this.apps >= o.apps) {
return this.apps;
} else {
return o.apps;
}
}
如果可以的话,请解释一下
比如说
// assuming Team has an int field, score and a String field, name
public int compareTo(Team o) {
if (Integer.compare(score, o.score) != 0) {
// the scores are not the same, so return the comparison
return Integer.compare(score, o.score)
} else {
// the scores are the same, so compare the Strings:
return name.compareTo(o.name);
}
}
除了@Hovercraft答案外,另一种排序方法是。而不是定义自然顺序(具有可比性) 创建自己的排序策略(使用Comparator) 创建一个保存数据的类
public class MyClass{
private String s;
private Integer id;
public static final Comparator MY_COMPARATOR = new MyComparator();
public MyClass(String s, Integer id){
this.s=s;
this.id=id;
}
@Override
public String toString(){
return "ID :"+id+" property: "+s;
}
//Add getter&setter if you need
//static nested class
private static class MyComparator implements Comparator<MyClass>{
@Override
public int compareTo(MyClass c, MyClass c2){
//check possible nullPointerException
int result = c.id.compareTo(c2.id);
if(result == 0){
return c.s.compareTo(c2.s);
}
return result;
}
}
}
公共类MyClass{
私有字符串;
私有整数id;
公共静态最终比较器MY_Comparator=新的MyComparator();
公共MyClass(字符串s,整数id){
这个.s=s;
这个.id=id;
}
@凌驾
公共字符串toString(){
返回“ID:+ID+”属性:+s;
}
//如果需要,添加getter和setter
//静态嵌套类
私有静态类MyComparator实现Comparator{
@凌驾
公共整数比较(MyClass c、MyClass c2){
//检查可能的nullPointerException
int result=c.id.compareTo(c2.id);
如果(结果==0){
返回c.s.compareTo(c2.s);
}
返回结果;
}
}
}
然后是客户端代码
List<MyClass> list = new ArrayList<>();
//add data to the list
//print it before sort
System.out.println(list);
Collections.sort(list,MyClass.MY_COMPARATOR);
//print it after sorting
System.out.println(list);
List List=new ArrayList();
//将数据添加到列表中
//排序前打印它
系统输出打印项次(列表);
Collections.sort(list,MyClass.MY_COMPARATOR);
//排序后打印
系统输出打印项次(列表);
除了@Hovercraft answer之外,另一种排序方法是。而不是定义自然顺序(具有可比性)
创建自己的排序策略(使用Comparator)
创建一个保存数据的类
public class MyClass{
private String s;
private Integer id;
public static final Comparator MY_COMPARATOR = new MyComparator();
public MyClass(String s, Integer id){
this.s=s;
this.id=id;
}
@Override
public String toString(){
return "ID :"+id+" property: "+s;
}
//Add getter&setter if you need
//static nested class
private static class MyComparator implements Comparator<MyClass>{
@Override
public int compareTo(MyClass c, MyClass c2){
//check possible nullPointerException
int result = c.id.compareTo(c2.id);
if(result == 0){
return c.s.compareTo(c2.s);
}
return result;
}
}
}
公共类MyClass{
私有字符串;
私有整数id;
公共静态最终比较器MY_Comparator=新的MyComparator();
公共MyClass(字符串s,整数id){
这个.s=s;
这个.id=id;
}
@凌驾
公共字符串toString(){
返回“ID:+ID+”属性:+s;
}
//如果需要,添加getter和setter
//静态嵌套类
私有静态类MyComparator实现Comparator{
@凌驾
公共整数比较(MyClass c、MyClass c2){
//检查可能的nullPointerException
int result=c.id.compareTo(c2.id);
如果(结果==0){
返回c.s.compareTo(c2.s);
}
返回结果;
}
}
}
然后是客户端代码
List<MyClass> list = new ArrayList<>();
//add data to the list
//print it before sort
System.out.println(list);
Collections.sort(list,MyClass.MY_COMPARATOR);
//print it after sorting
System.out.println(list);
List List=new ArrayList();
//将数据添加到列表中
//排序前打印它
系统输出打印项次(列表);
Collections.sort(list,MyClass.MY_COMPARATOR);
//排序后打印
系统输出打印项次(列表);
从您的示例中可以看出,您希望使用以下规则对每个元素进行排序:
如果(me(number)其他其他(单词))则我小于
否则如果我(字)<其他(字),那么我就比你大
否则我就等于别人
从您的示例中可以看出,您希望使用以下规则对每个元素进行排序:
如果(me(number)其他其他(单词))则我小于
否则如果我(字)<其他(字),那么我就比你大
否则我就等于别人
ArrayList包含什么?你能粘贴comparator/comparable接口代码吗..我一直在寻找一种实现正确的comparator接口的方法,因为我一直在使用并最终搜索的那些接口对于只包含整数或字符串的ArrayList是唯一的。我正在尝试按一些数字对ArrayList进行排序在字符串中,如果可能的话。ArrayList
包含什么?你能粘贴比较器/可比接口代码吗..我一直在寻找一种实现正确比较器接口的方法,因为我一直在使用并最终搜索的那些接口对于只包含整数的ArrayList或只包含字符串的ArrayList来说是唯一的。我正在尝试这样做