我有这门课:
public class Friend {
private String name;
private String location;
private String temp;
private String humidity;
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location; …Run Code Online (Sandbox Code Playgroud) 我有一个用 Java 编写的二叉树,效果很好。但是我想增强节点中的数据内容。目前,我可以在其上添加值,例如:
for( int i = 1; i <=10; i++ )
t.insert( new Integer( i ) );
Run Code Online (Sandbox Code Playgroud)
这将添加这样的项目:
public void insert( Comparable item ) {
current = parent = grand = header;
nullNode.element = item;
...
}
Run Code Online (Sandbox Code Playgroud)
这是树的格式:
private static class RedBlackNode {
// Constructors
RedBlackNode( Comparable theElement ) {
this( theElement, null, null );
}
RedBlackNode( Comparable theElement, RedBlackNode lt, RedBlackNode rt ) {
element = theElement;
left = lt;
right = rt;
color = RedBlackTree.BLACK;
}
Comparable …Run Code Online (Sandbox Code Playgroud) 我有以下代码.我原本期待Arrays.asList(LocalDate.of(2014, 1, 1), LocalDate.of(2015, 2, 2))转换成清单LocalDate.但我得到编译时错误max(dates).可能是导致此错误的原因是什么?
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class C {
public static <T extends Comparable<T>> T max(List<T> d) {
if (d.size() == 0) {
return null;
}
T maxValue = d.get(0);
for (T temp : d) {
if (maxValue.compareTo(temp) < 0) {
maxValue = temp;
}
}
return maxValue;
}
public static void main(String[] args) {
List<LocalDate> dates = new ArrayList<>();
dates.add(LocalDate.of(2015, 9, 15));
dates.add(LocalDate.of(2010, 9, …Run Code Online (Sandbox Code Playgroud) 为什么com.fasterxml.jackson.core.type.TypeReference实现Comparable 接口?
我不明白实施它的意图。
public abstract class TypeReference<T> implements Comparable<TypeReference<T>> {
protected final Type _type;
protected TypeReference() {
Type superClass = getClass().getGenericSuperclass();
if (superClass instanceof Class<?>) { // sanity check, should never happen
throw new IllegalArgumentException("Internal error: TypeReference constructed without actual type information");
}
/* 22-Dec-2008, tatu: Not sure if this case is safe -- I suspect
* it is possible to make it fail?
* But let's deal with specific
* case when we know an …Run Code Online (Sandbox Code Playgroud) 假设我有两个类CLassA和CLassB.它们有一个共同点,例如每个类所持有的元素数量.
我怎样才能在这一属性创建ClassA和ClassB的和排序的对象集合(降序排列的上升,并不重要)?
我创建了一个类型的集合,但是当我尝试实现Comparable Interface时,我无法访问该方法(例如,返回nr元素的get).
我有什么解决方案?
谢谢你的帮助!
目前我的问题是我需要使用一个我不允许更改的现有框架,解决我的问题最方便的方法是使用Comparable对象.假设我有一个对象Foo,它没有实现Comparable,我不允许进入并更改它以使其可比较.我的想法是只使用Bar,它扩展了Foo并实现了Comparable.
public class Bar extends Foo implements Comparable
{
public int compareTo( Object o)
{
Foo f = (Foo) o;
if( this.getID() < f.getID() ) return -1;
else if ( this.getID() == f.getID() ) return 0;
else return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
但是假设我在某个地方得到了Foo的一个实例.如何将其变成Bar的实例?是否有针对这种情况的推荐替代解决方案?
我正在尝试实现一个通用选择排序,它可以接受任何对象并对其进行排序.我可以向编译器承诺,无论我比较什么对象,都要为它实现compareTo方法.但是我得到以下代码的编译错误
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class SelectionSortGenerics implements Comparable<E> {
private <E> void swap(E[] a, int i, int j) {
if (i != j) {
E temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
public <E> void selectionSort(E[] a) {
for (int i = 0; i < a.length - 1; i++) {
// find index of smallest element
int smallest = i;
for (int j = i + 1; j < a.length; j++) { …Run Code Online (Sandbox Code Playgroud) 我在我的类Employee中实现了Comparator和Comparable来对一个arraylist进行排序.我正在排序2参数名称和ID.使用Collections.sort(Employee ob1,Employee ob2)使用ID进行排序时,它不起作用.我得到编译错误,该类没有声明为abstact,我没有重写compare(),虽然我这样做:
public int compare(Employee ob1, Employee ob2)
{
return ob1.id-ob2.id;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用它,它工作正常
public int compare(Object ob1, Object ob2)
{
return ((Employee)ob1).id-((Employee)ob2).id;
}
Run Code Online (Sandbox Code Playgroud)
我怀疑的是,为什么早期的工作不起作用,因为Employee也是一个Object.同样的问题也是compareTo(Object ob),虽然重写为什么我不能直接使用Employee,为什么我需要在那里使用Object,以后需要将它转换为Employee类.
这似乎很奇怪,这不符合我的预期.我写了一个简单的java类,它实现了Comparable接口并覆盖了compareTo()方法.但是,它不允许我传递除Object之外的特定类型的参数.我查看了其他人的在线代码,他们使用了其他类型的对象,我将他们的代码复制到了eclipse中,但我仍然遇到了同样的错误.
我的问题是; 我要做的就是将这个对象与类型的对象进行比较让我们说.我对比较器接口(compare()方法)也有同样的问题.
这段代码是我在网上找到的.
public class Person implements Comparable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
@Override
public String toString() {
return "";
}
@Override
public int compareTo(Person per) {
if(this.age == per.age)
return 0;
else
return this.age > per.age ? 1 : -1;
}
public static void main(String[] args) {
Person e1 …Run Code Online (Sandbox Code Playgroud) 我要实现的是从获取对象的min / max属性值ArrayList<Object>。例如,如果Object具有属性weight(浮点数),则我想要列表中最重的对象。
我试图实现Comparable以获取最大值/最小值,但是出于某种原因,此最小值返回相同的值,最大值返回相同的值。(我不知道它是否适用于浮点数)
val maxVal: Float = arrayList.max().floatVal1
val minVal: Float = arrayList.min().floatVal1
data class CustomObject(var val1: String, var floatVal1: Float , var floatVal2: Float?, var floatVal3: Float?, var floatVal4: Float?): Comparable<CustomObject>{
override fun compareTo(other: CustomObject) = (floatVal1 - other.floatVal1).toInt()
}
Run Code Online (Sandbox Code Playgroud)
重复帖子中的那个具体问题并未向我展示如何基于Float获得最大/最小价值。那就是问题所在。如果我要修改Comparator,则它仅接受Int。而且我无法使用该流功能,因为我的应用程序适用于API 23+而非24+
comparable ×10
java ×9
sorting ×3
arraylist ×2
collections ×2
comparator ×2
generics ×2
binary-tree ×1
class ×1
compareto ×1
jackson ×1
kotlin ×1
list ×1
string ×1