首页 > 解决方案 > 我如何比较java中的泛型类型?

问题描述

大家好,我一直在比较 java 中的泛型类型。

public class Odev1LinkedList<T extends Comparable<T>> extends AbstractLinkedList<T>{
    /**
     * Bir listede elemanları uygun konuma ekler. Boş bir listeye elemanlar eklendikten
     * sonra küçükten büyüğe sıralı olur
     * @param value eklenecek değer
     */
    @Override
    public void insertInOrder(T value) {
        Node current = this.getHead();
        Node previous = new Node<>(null,null);
        if(current == null){
            addFirst(value);
            return;
        }
        while(current != null){
            if(current.value >= value){
                if(current == this.getHead()){
                    addFirst(value);
                    return;
                }
                Node newNode = new Node<>(value,current);
                previous.next = newNode;
                return;
            }else if(current.next == null){
                addLast(value);
                return;
            }
            previous = current;
            current = current.next;
        }
    }

我被困在这一行if(current.value >= value) ... 因为有时我的值来自 String 有时来自 Integer 这个块足以比较整数但对 String 不好,我该如何解决这个问题。

我的方法就像按顺序添加节点 - >如果您有像 {1,2,4} 这样的链表,并且当您使用此方法添加新节点时,其值为 3 。你最新的链表必须是这样的{1,2,3,4}

{1,2,3,4} -> inserInOrder(5) -> {1,2,3,4,5}
{1,2,3,4} -> inserInOrder(0) -> {0,1,2,3,4}
{1,2,3,4} -> inserInOrder(2) -> {1,2,2,3,4}

我需要对字符串链表做出同样的想法。-> {"A","B","D"} ; inserInOrder("C") -> {"A","B","C","D"}

标签: javainterfacecompareto

解决方案


我认为您可以使用“try-catch”块。首先,在“try”块中,您尝试将值分配给 String 类型的变量。如果没问题,那么您的代码将在您编写比较匹配字符串逻辑的地方进一步执行。但如果不是,则抛出 ClassCastException,该异常被“catch”块捕获,在该块中,您尝试将值分配给变量类型 if Integer,然后执行所需的逻辑。像这样的东西:

try {
String variable = value
//String logic
} catch (Exception ClassCastException) {
int variable = value
//Integer logic
} 

推荐阅读