在本文中,我们将为您详细介绍Java排序:按属性对对象数组进行排序,不允许使用Comparable对象的相关知识,并且为您解答关于java对象数组排序的疑问,此外,我们还会提供一些关于c–按属性对对象
在本文中,我们将为您详细介绍Java排序:按属性对对象数组进行排序,不允许使用Comparable对象的相关知识,并且为您解答关于java 对象数组排序的疑问,此外,我们还会提供一些关于c – 按属性对对象进行排序、Java Comparator类对特定对象数组进行排序、javascript – 如何通过布尔属性对对象数组进行排序、javascript – 按多个属性对对象数组进行排序的有用信息。
本文目录一览:- Java排序:按属性对对象数组进行排序,不允许使用Comparable对象(java 对象数组排序)
- c – 按属性对对象进行排序
- Java Comparator类对特定对象数组进行排序
- javascript – 如何通过布尔属性对对象数组进行排序
- javascript – 按多个属性对对象数组进行排序
Java排序:按属性对对象数组进行排序,不允许使用Comparable对象(java 对象数组排序)
我有一个类Library,它包含一个Book对象数组,我需要根据Book的Title或PageNumber属性对数组进行排序。我不允许问题与Book一起使用Comparable类。您如何建议我对图书馆中的书籍进行排序?写我自己的排序?还是有更简单的方法?如果您需要代码片段,请问!
答案1
小编典典您可以提供一个Comparator
用于比较您希望的任何类型的对象,Comparable
否则。
对于数组和集合,请使用
Arrays.sort(array, myComparator);Collections.sort(list, myComparator);
甚至像TreeSet这样的已排序集合也可以使用自定义比较器
例如
Collections.sort(books, new Comparator<Book>() { public int compare(Book b1, Book b2) { return if b1 is greater return +1, if b2 is smaller return -1 otherwise 0 }});
c – 按属性对对象进行排序
void sortRegistryByName(std::list<Transcript>& registry) { std::sort(registry.begin(),registry.end(),[](const Transcript &f,const Transcript &s) { return f.name < s.name; }); }
上面的代码应该按照其名称属性对Transcripts列表进行排序.
成绩单如下:
typedef struct Transcript_t { std::string name; // Name of the transcript std::string student_id; std::list<std::pair<std::string,size_t>> grades; // List of (course,grade) pairs } Transcript;
当我尝试编译它时,sort函数会导致一个巨大的错误墙,其中包含与safe_iterators和运算符相关的内容.
有人在这里看到任何真正愚蠢的错误吗?我对它视而不见.
解决方法
std::list<Transcript> registry; registry.sort([](const Transcript &f,const Transcript &s) { return f.name < s.name; });
Java Comparator类对特定对象数组进行排序
我有一个浮点数组和一个字符串数组。每个浮点值都与特定的String匹配。我想使用以下方式对保留自己的字符串的float数组进行排序:
public static <T> void sort(T[] a,Comparator<? super T> c)
这是代码:
public class ResultVoiceObject{ private String frase; private float ranking; public ResultVoiceObject(String f, float r) { this.frase=f; this.ranking= r; } } public class VoiceRecognitionDemo extends Activity { // Populate the wordsList with the String values the recognition engine thought it heard ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); //il Ranking float[] score= data.getFloatArrayExtra(RecognizerIntent.EXTRA_CONFIDENCE_SCORES); ResultVoiceObject[] risultati= new ResultVoiceObject[score.length]; for (i=0; i<risultati.length;i++) { risultati[i]=new ResultVoiceObject(matches.get(i), score[i]); } ResultVoiceObject[] risultatiDaOrdinare= risultati; // risultati contais ResultVoiceObject elements /*sorting*/ }
如何排序并保留自己的字符串?
非常感谢。
答案1
小编典典ResultVoiceObject[] objects = ...Arrays.sort(objects, new Comparator<ResultVoiceObject>() { @Override public int compare(ResultVoiceObject arg0, ResultVoiceObject arg1) { return Float.compare(arg0.getRanking(), arg1.getRanking()); }});
javascript – 如何通过布尔属性对对象数组进行排序
我正在尝试对它进行排序,因此数组中的顶部项目将是’offer = true’,然后是’shortlisted = true’,最后是’rejected = true’.
var toSort = [{ offer: false,shortlisted: true,rejected: false,stage: 2 },{ offer: false,shortlisted: false,rejected: true,stage: null },{ offer: true,stage: 1 }];
这是我想要达到的最终结果
[{ offer: true,stage: 1 },stage: null }]
排序此数组的最佳方法是什么?
解决方法
var toSort = [{ offer: false,{ offer: false,{ offer: true,stage: 1 }]; var result = toSort.sort(function(a,b) { return b.offer - a.offer || b.shortlisted - a.shortlisted || b.rejected - a.rejected }) console.log(result)
javascript – 按多个属性对对象数组进行排序
var a = [ { id: 1,score: 1,isCut: false,dnf: false },{ id: 2,score: 2,{ id: 3,score: 3,{ id: 4,score: 4,{ id: 5,score: 5,isCut: true,dnf: true },{ id: 6,score: 6,{ id: 7,score: 7,{ id: 8,score: 8,{ id: 9,score: 9,{ id: 10,score: 0,{ id: 11,score: -1,{ id: 12,score: -2,{ id: 13,score: -3,{ id: 14,score: -4,{ id: 15,score: -5,{ id: 16,score: 10,dnf: false } ];
我需要按以下标准对数组进行分组和排序:
>如果dnf为真,则对象进入底部;所有dnf对象都应按分数排序
>如果isCut为true,则对象转到底部,但高于dnfs;所有isCut-objects应按分数排序
>休息应按分数排序,如果分数相等,则按id
解决方法
a.sort(function(a,b) { if (a.dnf != b.dnf) { return a.dnf ? 1 : -1; } if (!(a.dnf && b.dnf) && a.isCut != b.isCut) { return a.isCut ? 1 : -1; } if (a.score != b.score) { return b.score - a.score; // descending } return b.id - a.id; // descending });
结果:
[ {"id":4,"score":4,"isCut":false,"dnf":false},// the rest: order by score,id {"id":3,"score":3,// {"id":2,"score":2,// {"id":1,"score":1,// {"id":10,"score":0,// {"id":11,"score":-1,// {"id":13,"score":-3,// {"id":14,"score":-4,// {"id":15,"score":-5,// {"id":16,"score":10,"isCut":true,// isCut: order by score,id {"id":9,"score":9,// {"id":8,"score":8,// {"id":7,"score":7,// {"id":6,"score":6,// {"id":5,"score":5,"dnf":true},// dnf: order by score,id {"id":12,"score":-2,"dnf":true} // ]
今天关于Java排序:按属性对对象数组进行排序,不允许使用Comparable对象和java 对象数组排序的讲解已经结束,谢谢您的阅读,如果想了解更多关于c – 按属性对对象进行排序、Java Comparator类对特定对象数组进行排序、javascript – 如何通过布尔属性对对象数组进行排序、javascript – 按多个属性对对象数组进行排序的相关知识,请在本站搜索。
本文标签: