我只是想从列表中删除重复的元素.为此,我写了一个POJO类Student:
class Student{
private String roll;
private String name;
public Student(String roll, String name) {
this.roll = roll;
this.name = name;
}
@Override
public boolean equals(Object obj) {
Student st = (Student) obj;
return st.getRoll().equals(roll);
}
public String getRoll() {
return roll;
}
public void setRoll(String roll) {
this.roll = roll;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return roll ;
}
} …Run Code Online (Sandbox Code Playgroud) 我正在学习Java,他们给了我一个我非常努力的练习。我将为您提供完整的练习(从我的母语翻译而来),而不是对其进行解释,因此您可以理解。我真的不明白我该怎么做。我不假装完整的代码(即使我会很欣赏,因为制作精良的代码可以帮助我改善并更好地理解应该如何做),但至少我想知道我应该从哪里开始寻找对于解决方案,因为现在我撞墙了,很痛。
我的第一个想法是重写.equals方法,但这似乎并不正确。我以为我可以创建一个子类,但在示例中,它们对主实例和3个派生实例都使用相同的类,所以不是。
练习:
创建一个Animal类,其特征在于:
如果两只动物的腿数相同,属于同一类型并且具有相同的平均体重,则认为它们是相等的。该类必须实现三种方法,这些方法允许转换动物,以便仅比较一个特征(每个特征一个方法)。
范例:
Animal cat = new Animal (4, "Cat", 5);
Animal dog = new Animal (4, "Dog", 5);
Animal catNumberOfLegs = cat.compareNumberOfLegs();
Animal catType = cat.compareType ();
Animal catWeigth = cat.compareWeigth();
Animal dogNumberOfLegs = dog.compareNumberOfLegs ();
Animal dogType = dog.compareType ();
Animal dogWeigth = dog.compareWeigth ();
System.out.println (cat.equals (dog)); // false
System.out.println (catNumberOfLegs.equals (dogNumberOfLegs)); // true
System.out.println (catType.equals (dogType)); // false
System.out.println (catWeigth.equals (dogWeigth)); // true
------------
Run Code Online (Sandbox Code Playgroud)
变量的值必须保持不变。
Java是一种面向对象的语言:请记住!
编辑:我正在编辑此原因,我在注释中看到一些混乱,不知道这是造成练习写得不好还是导致翻译的原因。
关键是,我有两个Animal类实例。一个叫猫,另一个叫狗。我有这3个单独的方法来实现,当在实例上使用时,返回给我一个新实例,该实例在使用.equals()时仅考虑其中一个变量。让我们采用方法“ compareNumberOfLegs();”。举个例子。动物dogTWO = …
我正在制作一个调度(调度员?)程序。当我设法创建“addReport”方法时,我在显示所有报告(遍历地图)时遇到了问题。我认为每次我尝试添加新元素时,它们都会被替换,因为标识符 (UUID) 是相同的。你怎么看,或者可能是不同的东西?
public class Dispatching {
private String identificator;
private Map<String, Report> reportMap;
public Dispatching() {
this.identificator = UUID.randomUUID().toString();
this.reportMap = new HashMap<>();
}
void addReport(String message, ReportType type) {
reportMap.put(identificator, new Report(type, message, LocalTime.now()));
}
void showReports() {
for (Map.Entry element : reportMap.entrySet()) {
System.out.println("uuid: " + element.getKey().toString()
+ " " + element.getValue().toString());
}
}
}
public class Report {
ReportType reportType;
String reportMessage;
LocalTime reportTime;
public Report(ReportType reportType, String reportMessage, LocalTime reportTime) {
this.reportType = reportType;
this.reportMessage …Run Code Online (Sandbox Code Playgroud) 我有这门课:
\nclass Product {\n public double price;\n\n public Product(double price) {\n this.price = price;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n还有一张地图:
\nMap<Product, Integer> products = new HashMap<>();\nRun Code Online (Sandbox Code Playgroud)\n其中包含添加的几种产品,如下所示:
\nproducts.put(new Product(2.99), 2);\nproducts.put(new Product(1.99), 4);\nRun Code Online (Sandbox Code Playgroud)\n我想使用流计算所有乘积的总和乘以值?我试过:
\ndouble total = products.entrySet().stream().mapToDouble((k, v) -> k.getKey().price * v.getValue()).sum();\nRun Code Online (Sandbox Code Playgroud)\n但它无法编译,我得到 \xe2\x80\x9c无法解析方法getValue()\xe2\x80\x9d。
我预计:
\n(2.99 * 2) + (1.99 * 4) = 5.98 + 7.96 = 13.94\nRun Code Online (Sandbox Code Playgroud)\n java ×4
collections ×2
hashcode ×1
hashmap ×1
hashset ×1
java-8 ×1
java-stream ×1
oop ×1
set ×1
uuid ×1