java - 我如何比较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"}
解决方案
我认为您可以使用“try-catch”块。首先,在“try”块中,您尝试将值分配给 String 类型的变量。如果没问题,那么您的代码将在您编写比较匹配字符串逻辑的地方进一步执行。但如果不是,则抛出 ClassCastException,该异常被“catch”块捕获,在该块中,您尝试将值分配给变量类型 if Integer,然后执行所需的逻辑。像这样的东西:
try {
String variable = value
//String logic
} catch (Exception ClassCastException) {
int variable = value
//Integer logic
}
推荐阅读
- android - 按下按钮 5 秒后执行操作
- python - 如何获取所有子字符串的所有子字符串和所有字符排列?
- firebase - 从 dart 中的 Cloud_Firestore 获取布尔状态
- excel - 如何在 VBA 中输出每次迭代的结果集?
- typescript - VS Code 中的调试不适用于 Typescript Vue 应用程序
- powershell - 将随机数批量添加到文件名的最佳方法?
- javascript - 错误:无效登录:一切看起来都很好时的nodeMailer
- javascript - 无法将参数传递为对象的属性名称
- swift - 导航视图。黑屏
- r - 模拟 Heston 模型来评估 optinos