请告诉我一个实时的情况来比较String,StringBuffer和StringBuilder?
我学会了如何使用比较器,但我对比较器有困难.我的代码中有错误:
Exception in thread "main" java.lang.ClassCastException: New.People cannot be cast to java.lang.Comparable
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at New.TestPeople.main(TestPeople.java:18)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import java.util.Comparator;
public class People implements Comparator {
private int id;
private String info;
private double price;
public People(int newid, String newinfo, double newprice) {
setid(newid);
setinfo(newinfo);
setprice(newprice);
}
public int getid() {
return id;
}
public void setid(int id) {
this.id = id;
}
public String getinfo() {
return info;
}
public void setinfo(String info) …Run Code Online (Sandbox Code Playgroud) 可能重复:
compare()和compareTo()
之间的区别Java:实现Comparable和Comparator有什么区别?
Comparable和Comparator之间的关键区别是什么?
哪些情况比哪一种更受欢迎?
谢谢
更新 - 良好的链接与示例!
http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html
我见过同时实现Comparable和Comparator的类.这是什么意思?为什么我会使用一个而不是另一个?
为什么Comparable使用Java ?为什么有人会Comparable在课堂上实施?您需要实施可比较的现实生活示例是什么?
我希望为我的地址簿应用程序实现一个排序功能.
我想要排序ArrayList<Contact> contactArray.Contact是一个包含四个字段的类:姓名,家庭电话号码,手机号码和地址.我想要排序name.
如何编写自定义排序功能来执行此操作?
我想用Lambda对列表进行排序:
List<Message> messagesByDeviceType = new ArrayList<Message>();
messagesByDeviceType.sort((Message o1, Message o2)->o1.getTime()-o2.getTime());
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个编译错误:
Multiple markers at this line
- Type mismatch: cannot convert from long to int
- The method sort(Comparator<? super Message>) in the type List<Message> is not applicable for the arguments ((Message o1, Message o2)
-> {})
Run Code Online (Sandbox Code Playgroud) 我试图让它工作很长一段时间,但似乎无法得到它.我有Block的Block塔.我已经使用数组工作,但我想学习Set的.我想得到类似的功能:
public class Tower {
public Tower(){
}
public Tower add(Block k1){
//(...)
//if block already in tower, return "Block already in tower"
}
public Tower delete(Block k1){
//(...)
//if block already dleted, show "No such block in tower"
}
}
Run Code Online (Sandbox Code Playgroud)
有人给了我一些代码,但在尝试使用时我经常遇到错误:
Set<Block> tower = new HashSet<Block>();
boolean added = tower.add( k1 );
if( added ) {
System.out.println("Added 1 block.");
} else {
System.out.println("Tower already contains this block.");
}
Run Code Online (Sandbox Code Playgroud)
怎么实现呢?
java ×10
comparator ×4
collections ×3
comparable ×2
sorting ×2
arraylist ×1
hashmap ×1
hashtable ×1
interface ×1
java-8 ×1
lambda ×1
oop ×1
set ×1
string ×1