这是作业; 请不要只给我代码
我有两种方法:remove(T data)
和removeRec(Node<T> node, T data)
.
在当前状态下,似乎我的代码只删除root
了BST 的节点.
@Override
public T remove(T data) {
if (data == null) {
throw new IllegalArgumentException("Data is null");
}
if (root == null) {
throw new java.util.NoSuchElementException("BST is empty");
} else {
size--;
BSTNode<T> dummy = new BSTNode<T>(null);
return removeRec(root, data, dummy).getData(); //This is probably wrong too
}
}
/**
* Helper method to recursively search for, and remove the BSTNode with
* the given data in …
Run Code Online (Sandbox Code Playgroud) 如何使用"<"或">"将Java中的两个对象进行比较,例如
MyObject<String> obj1= new MyObject<String>(“blablabla”, 25);
MyObject<String> obj2= new MyObject<String>(“nannaanana”, 17);
if (obj1 > obj2)
do something.
Run Code Online (Sandbox Code Playgroud)
我把MyObject类标题设为
public class MyObject<T extends Comparable<T>> implements Comparable<MyObject<T>>
并且创建了方法Comp但是我获得的所有增益现在我可以在对象列表上使用"sort",但是如何直接比较两个对象?是
if(obj1.compareTo(obj2) > 0)
do something
Run Code Online (Sandbox Code Playgroud)
唯一的办法?
我在Java 11中反序列化存在问题,导致HashMap
无法找到密钥。如果对这个问题有更多了解的任何人都可以说我建议的解决方法看起来还可以,或者我可以做得更好,我将不胜感激。
考虑以下人为设计的实现(实际问题中的关系稍微复杂一些,很难更改):
public class Element implements Serializable {
private static long serialVersionUID = 1L;
private final int id;
private final Map<Element, Integer> idFromElement = new HashMap<>();
public Element(int id) {
this.id = id;
}
public void addAll(Collection<Element> elements) {
elements.forEach(e -> idFromElement.put(e, e.id));
}
public Integer idFrom(Element element) {
return idFromElement.get(element);
}
@Override
public int hashCode() {
return id;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof …
Run Code Online (Sandbox Code Playgroud) 我有一个基本上看起来像这样的接口:
public interface ISetting<T> {
public T getDefault();
public T value();
public void set(T value);
public String getName();
public default String getValueName() {
Object obj = value();
if (obj instanceof Boolean) {
return (boolean)obj ? "Yes" : "No";
}
return obj.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在另一个班级我有一个清单 ISetting<?>
private List<ISetting<?>> settings = Arrays.asList(
new ClassMode(),
new EndMode(),
new PlayerLives(),
new JoinMidGame(),
new ScoreboardDisplay(),
new LifePerKill(),
new ExplosiveBullets(),
new ReloadTime());
Run Code Online (Sandbox Code Playgroud)
这一切都完美无缺!但是,我使用我的代码的平台不支持Java 8,所以我必须使用Java 7,这就是问题所在.
如果我将Maven目标设置为1.7,就像在我的pom.xml中一样:
<configuration>
<source>1.8</source>
<target>1.7</target>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后代码完美编译,没有错误或任何东西.但是,当我尝试运行代码时,它给了我这个错误:
java.lang.ClassFormatError:类net/uniqraft/murder/match/settings/ISetting中的方法getValueName具有非法修饰符:0x1
我尝试谷歌它但找不到我理解或似乎适用于我的情况.
所以,我想,我只是将整个代码库变成Java 7:
<configuration> …
Run Code Online (Sandbox Code Playgroud) 我有一个项目的ArrayList,我希望能够通过只输入一个Item属性从列表中删除一个Item,例如它的数字(int ItemNumber).当我检查物品数量时,我也想做同样的事情.
这是我 equals()
和contains()
方法,做我需要在这里做任何改变?
public boolean contains(T anEntry) {
boolean found = false;
for (int index = 0; !found && (index < numberOfEntries); index++) {
if (anEntry.equals(list[index]))
found = true;
}//end for
return found;
} // end contains
public boolean equals(Object object){
Item item = (Item) object;
if (itemNo == item.itemNo)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud) 我正在通过Java的CodingBat练习.我遇到了以下问题:
给定2个包含字符串长度的数组,将一个数组中的第一个字符串与另一个数组中的第一个字符串进行比较,将第二个字符串与第二个字符串进行比较,依此类推.计算2个字符串非空的次数,并以相同的char开头.字符串可以是任何长度,包括0.
我的代码是这样的:
public int matchUp(String[] a, String[] b){
int count = 0;
for (int i = 0; i < a.length; i++) {
String firstLetterA = a[i].length() == 0
? "ê"
: a[i].substring(0, 1);
String firstLetterB = b[i].length() == 0
? "é"
: b[i].substring(0, 1);
if (firstLetterA.equals(firstLetterB)) {
count++;
}
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:哪个'占位符'字符被认为是良好的做法,以避免不必要的比较firstLetterA
和firstLetterB
?
在这种情况下,我只分配了两个很少使用的不同字母(至少用英文).我尝试使用''
(一个空字符,而不是一个空格)但当然,它们相互匹配.我也尝试过使用null
它们,因为我认为它无法进行积极的比较,但这也会导致问题.
我有一个名为的类Student
和子类AthleteStudent
:
public class Student {
protected String name;
protected String age;
public void hello () {
system.out.println("Hello I'm Student");
}
}
public class AthleteStudent extends Student {
protected String sport;
public void hello () {
system.out.println("Hello I'm AthleteStudent");
}
public void changeDepartement() {
.....
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们来看看这些测试用例:
AthleteStudent ats = new AthleteStudent("test", 22, "Karate");
Student std;
std = ats; // upcasting OK
/* ats and std point to the same object, i.e AthleteStudent */
ats.hello(); /* …
Run Code Online (Sandbox Code Playgroud) 是否有更快的方法在Java中实例化对象,而不必重新键入类?例如,看看这个实例化的大部头:
HashMap<Integer, ArrayList<ActivityRecord>> days = new HashMap<Integer, ArrayList<ActivityRecord>>();
Run Code Online (Sandbox Code Playgroud)
我喜欢这样的简写:
HashMap<Integer, ArrayList<ActivityRecord>> days = new();
Run Code Online (Sandbox Code Playgroud)
或者,我也很高兴Eclipse快捷方式自动完成实例化以使用无参数构造函数.
我看过很多关于 HasSets 的优秀资源,但没有任何资源可以帮助我解决这个特定问题。我正在学习关于泛型的算法类,并且此作业需要使用 Scanner (已完成)将 txt 文件读入系统并使用 hashSet,加载 txt 文件,以便我可以使用用户输入读取它并找到该词出现的次数。我有返回单词的方法,并且我已经完成了大部分哈希集和文件读取器代码。但我完全不知道如何将整个 txt 文件存储为一个 hashSet。我无法通过crime.add 让它工作,我尝试了其他几件事。我是否缺少一种更简单的方法来实现此方法?谢谢
\n\n编辑:作业说明 - \n程序 1(70 分)\n用小说 \xe2\x80\x9c犯罪与惩罚\xe2\x80\x9d 中的文字加载 java.util.HashSet,作者:\nTheodore Dostoevsky(文本文件可用)在黑板上完成此作业)。提示用户\n输入单词并报告该单词是否出现在小说中。
\n\n编辑:好的,我已经写好了所有这些并且它运行了,但是它没有找到 txt 文件中肯定存在的单词,所以我在将文件添加到 hashSet 中时出错了。有任何想法吗?我尝试过数组列表、不同的字符串实现,但我只是不知道该转向哪里。感谢您提供任何有用的信息。
\n\nimport java.awt.List;\nimport java.io.File;\nimport java.io.FileNotFoundException;\nimport java.util.HashSet;\nimport java.util.Scanner;\nimport java.util.Set;\n\npublic class CandPHashSet {\n public static void main(String[] args) throws FileNotFoundException{\n Scanner file = new Scanner(new File("crime_and_punishment.txt")).useDelimiter("[\xcb\x86a-zA-Z]+");\n Scanner input = new Scanner(System.in);\n\n Set<String> crime = new HashSet<String>();\n\n while(file.hasNext()){\n String line = file.nextLine();\n //String[] words = line.split("[\xcb\x86a-zA-Z]+");\n for (String word : line.split("[\xcb\x86a-zA-Z]+")){\n crime.add(line);\n }\n …
Run Code Online (Sandbox Code Playgroud) 我正在研究 Java 中的继承,我正在学习的书使用一个Employee
类来解释几个概念。由于同名的 java 文件中只能有一个(公共)类,并且该类创建另一个类的对象,因此我必须在同一个文件中定义一个 Employee 类,而不使用修饰符public
。我的印象是,在同一个 java 文件中的另一个类主体之后以这种方式定义的类对于同一包中的其他类不可见。下面是用于演示的示例 Java 代码:
package book3_OOP;
public class TestEquality3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Employeee emp1 = new Employeee("John", "Doe");
Employeee emp2 = new Employeee("John", "Doe");
if (emp1.equals(emp2))
System.out.println("These employees are the same.");
else
System.out.println("Employees are different.");
}
}
class Employeee {
private String firstName, lastName;
public Employeee(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public …
Run Code Online (Sandbox Code Playgroud)