Java 关于排序数组列表
我试图确保我在productDatabase中插入的对象尚未插入,并且我使用方法sortData对arraylist进行排序,但不使用方法sortData中的任何比较器Java 关于排序数组列表,java,arrays,sorting,Java,Arrays,Sorting,我试图确保我在productDatabase中插入的对象尚未插入,并且我使用方法sortData对arraylist进行排序,但不使用方法sortData中的任何比较器 public class Application { public static void main(String[] args) { Product p = new Product(15,"test",3.45); Product p2 = new Product(15,"test",3.45);
public class Application {
public static void main(String[] args) {
Product p = new Product(15,"test",3.45);
Product p2 = new Product(15,"test",3.45);
Product p3 = new Product(4716,"koukouroukou",1.25);
Product p4 = new Product(6002,"bananofatsoula",0.60);
ProductDatabase productDatabase = new ProductDatabase();
productDatabase.addProduct(p);
productDatabase.addProduct(p2);
productDatabase.addProduct(p3);
productDatabase.addProduct(p4);
productDatabase.printDatabase();
productDatabase.sortDatabase();
productDatabase.printDatabase();
}
import java.util.ArrayList;
导入java.util.Collection;
公共类产品数据库{
私有ArrayList产品数据库;
公共产品数据库(){
productDatabase=new ArrayList();
}
公共产品(产品p){
如果(!productDatabase.contains(p)){
productDatabase.add(p);
}
}
公共数据库(){
for(产品:productDatabase){
系统输出打印项次(产品);
}
}
公共无效sortDatabase(){
// ????????????????????????????????????????????????????????????
所以我的问题是你的问题1和2有点不清楚。你能重新编写它们吗?至于问题3。没有ProductDatabase不扩展product,它也不应该扩展product。ProductDatabase有产品。ProductDatabase不是产品你可以返回布尔值,以知道产品是否已经存在。使用代码为确保产品的差异化,如果不添加另一个代码id。 产品实例将只携带一个产品的信息,因此必须在类的成员函数中进行排序,该类包含产品的所有记录,而不仅仅是一个记录。 没有产品\数据库不扩展产品。它是产品类的日志,而不是一部分
contains()
足以确保唯一性(在我们的例子中)equals
和hashCode
,那么您就很好了contains()
时都使用ArrayList,因此它会迭代整个列表,这不是很有效。更好的实现方法是使用Set
(例如HashSet
)ProductDatabase
不必扩展Product
——它包含一个产品列表/集合,但没有任何类似Product
Product other = (Product)o;
return this.code == other.code;
- 排序(列表,比较器c)。您必须编写自己的比较器类并作为第二个参数传递
- 集合。排序(列表)和类产品必须实现可比较的接口
对于问题2,您必须确定两个产品何时相等,并在您的equals方法中对其进行编码,就像您对“产品代码”所做的那样。是否有任何特殊原因您不能使用
Set
而不是List
?您能更具体一点吗?我是java环境的新手为什么不想使用比较器?集合不允许使用比较器将要插入的重复元素保存在包含的内容中
检查如果您不想使用comperator,则可以实现compareTo()
(接口Comparable
)我是java新手,所以我的问题可能对您没有意义。首先,我希望在应用程序类中,正如您所看到的,确保p2不会双重插入数组中。我的另一个问题是如何在product类中使用方法,我可能在方法sortDatabase中调用该方法,我可以按productprices对数组进行排序
import java.util.ArrayList;
import java.util.Collection;
public class ProductDatabase {
private ArrayList<Product> productDatabase;
public ProductDatabase(){
productDatabase = new ArrayList<Product>();
}
public void addProduct(Product p){
if(!productDatabase.contains(p)){
productDatabase.add(p);
}
}
public void printDatabase(){
for(Product product : productDatabase){
System.out.println(product);
}
}
public void sortDatabase(){
// ????????????????????????????????????????????????????????????
Product other = (Product)o;
return this.code == other.code;