您好我有这个代码将按顺序对字符串列表进行排序,我也可以将数组排序为升序,因为有很多教程可以帮助我。我遇到的问题是用附加的字母对数字进行排序。这可能吗?这是我到目前为止所拥有的。
DictReader
}
答案 0 :(得分:1)
可以对任何类型的Comparable
元素进行排序。
如果您使用String
作为值,则将使用字符串的自然顺序对其进行排序。如果您需要不同的比较政策,则需要编写Comparator
并使用它来比较值而不是直接比较它们
public static Node insertInOrder(Comparator<String> comparator) {
Node current = getNode(inFile.next());
Node first = current, last = current;
while (inFile.hasNext()) {
if (first != null && comparator.compare(current.value, first.value) < 0) {
current.next = first;
first = current;
} else if (last != null && comparator.compare(current.value, last.value) > 0) {
last.next = current;
last = current;
} else {
Node temp = first;
while (comparator.compare(current.value, temp.value) < 0){
temp = temp.next;
}
current.next = temp.next;
temp.next = current;
}
current = getNode(inFile.next());
}
return first;
}
答案 1 :(得分:0)
我认为,您需要使用int
类的以下方法存储与String value
对应的其他数据Integer
数据项,
public static int parseInt(String s,int radix) throws NumberFormatException
其中radix = 16。然后你可以将它排序为普通整数(基数为10)。
您需要更改Node
课程,以int
代替String
public static class Node {
public int value;
public Node next;
}
然后在您的getNode(String element)
方法中,执行十六进制字符串转换为int
,
public static Node getNode(String element) {
Node temp = new Node();
try{
temp.value = Integer.parseInt(element,16);
}catch(NumberFormatException ex){
ex.printStackTrace();
}
temp.next = null;
return temp;
}
现在,您可以修改insertInOrder()
方法,将其作为简单整数进行比较,&gt; ,&lt; ,==等而不是value.compareTo