Tag: 可比

使用Comparable和Comparator比较generics类型

我遇到了头疼我调试有困难。 我试图比较两个通用值,以便我可以根据值将它们插入到数组中。 这是我第一次使用Comparable和Comparator接口,因此围绕这些问题的任何其他建议都会很棒。 这就是我的课程设置方式: public class SVStore<K, V extends Comparable> implements Pairs, Iterable, Comparable, Comparator { put()方法: @Override public V put(K key, V value) { SVData tab[] = table; for (int i = 0; i < table.length – 1; i++) { if (value.compareTo(tab[i].dataValue) <= 0) { int index = i; for( int j = index; […]

用于可比较对象列表的Java语法

我正在编写一个方法,它将唯一参数作为可比较对象的列表,并且不返回任何内容。 我不确定它应具有的语法: public static void methodName(List<Comparable> list) { // Do some stuff } 我认为这是错误的,因为作为Comparable的类型,这意味着列表可以将Integer和Boolean作为对象,但我不希望这样。 我希望列表只采用一种类型,但该类型必须实现Comparable接口。 我如何实现这一目标?

Java HashSet允许欺骗; 问题可比吗?

我有一个类“Accumulator”,它实现了Comparable compareTo方法,我试图将这些对象放入HashSet中。 当我向HashSet添加()时,我在调试器中的compareTo方法中看不到任何活动,无论我在哪里设置断点。 另外,当我完成add()时,我在Set中看到了几个重复项。 在这里,我搞砸了什么; 为什么不比较,因此允许欺骗? 谢谢, IVR复仇者

Java Generics:compareTo和“capture#1-of?”

以下给出了一条错误消息: public static List<Comparable> merge(Set<List<Comparable>> lists) { List<Comparable> result = new LinkedList<Comparable>(); HashBiMap<List<Comparable>, Integer> location = HashBiMap.create(); int totalSize; for (List<Comparable> l : lists) { location.put(l, 0); totalSize += l.size(); } boolean first; List<Comparable> lowest; //the list with the lowest item to add int index; while (result.size() < totalSize) { first = true; for (List<Comparable> […]

java:基于array2排序array1

感谢Zirak的帮助在我之前的post中,我在JavaScript中实现了以下内容: var arr1 =[0,1,2,3]; var arr2 =[“ac”, “bc”, “ad”, “e”]; var result = arr1 .sort(function(i, j){return arr2[i].localeCompare(arr2[j])}) document.write(result ); 实现这一点的方法在JavaScript中非常紧凑,这样的简单实现也可以实现这一点的java实现吗? 我只能想到实现Comparable接口,如下所示: public class testCompare { public static String[] arr2={“ac”, “bc”, “ad”, “e”}; public static Obj[] arr1={new Obj(0), new Obj(1), new Obj(2), new Obj(3)}; static class Obj implements Comparable{ int index=0; public Obj(int i){ index=i; } […]

Java:使用Collat​​orKey对集合进行排序

我想要实现的是通过字符串值对对象的集合进行排序。 但是,使用collat​​or以依赖于语言环境的方式。 由于性能原因,我不想使用Collat​​or compare()方法(如下面的代码中)而不是Collat​​ionKey类,因为java API声明使用Collat​​ionKey要快得多。 但是如何使用Collat​​ionKey实现compareTo()方法? 据我所知,如果我要使用Collat​​ionKey,我必须自己完全编写所有的比较方法。 所以我甚至不能再使用Collections.sort()方法……我非常感谢一个易于理解的示例,以及使用Collat​​ionKey对Person对象进行排序的最有效实现。 谢谢! public class Person implements Comparable { String lastname; public int compareTo(Person person) { //This works but it is not the best implementation for a good performance Collator instance = Collator.getInstance(Locale.ITALY); return instance.compare(lastname, person.lastname); } } … ArrayList list = new ArrayList(); Person person1 = new Person(“foo”); […]

Java“unchecked调用compareTo(T)作为原始类型java.lang.Comparable的成员”

我正在尝试将排序列表实现为Java中的简单练习。 为了使它具有通用性,我有一个add(Comparable obj)所以我可以在任何实现Comparable接口的类中使用它。 但是,当我在代码中的任何地方使用obj.compareTo(…)时,我从编译器中获取”unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable” (使用-Xlint:unchecked选项) )。 代码工作正常,但我无法弄清楚如何摆脱这个烦人的消息。 任何提示?

比较不同类型的物体具有可比性

A.java public class A implements Comparable { private String id; private String name; public A(String a, String b) { id = a; name = b; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name […]

为什么我会得到一个类强制转换exception(使用generics,可比较)?

我正在尝试实现一个排序和未排序的数组列表。 两者都扩展了一个名为AbstractArrayMyList的类,它包含常见的操作/实现 – toString,clear等…. 这是我的AbstractArrayMyList代码(它实现了我定义的通用接口) public abstract class AbstractArrayMyList implements MyList { protected E[] elementData; ….. } 我选择对elementData进行保护,以便排序和未排序的专用数组列表可以访问它并对其执行操作。 这是我的排序数组列表的声明/代码 public class ArrayListSorted<E extends Comparable> extends AbstractArrayMyList 这一切都很好。 但是当我用这些行测试我的代码时 ArrayListSorted toTestInteger = new ArrayListSorted() toTestInteger.insert(0); assertEquals(toTestInteger.get(0).intValue(), 0); 我得到一个类强制转换exception java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable; at myarraylist.ArrayListSorted.getIndex(ArrayListSorted.java:38) 发生在这里 @Override public int getIndex(E value) { int lo […]

等于具有可比接口的方法合同

我有像Person这样的自定义类: public class Person { int age; String name; } 现在我想根据age对Person类对象进行排序。 所以我将使用Comparable接口并实现compareTo()方法。 并且比较将有基于age比较人物对象的逻辑。 所以,如果我这样做: Collections.sort(list); // where list is a list of person 我会根据age得到排序人名单。 但我在某处读到,当我们进行Comparable实现时,我们也需要重写equals()方法。 但我现在还没有看到它的使用。 任何人都可以解释,如果我想根据age sort ,还需要覆盖equals()方法吗?