我目前有一个.txt文件,我需要根据里面的内容读取和输出数据。我目前打开文件并将文件中的每一行保存到ArrayList中。
.txt文件设置如下;
当前代码;
bits 32
global start
extern exit,printf
import exit msvcrt.dll
import printf msvcrt.dll
segment data use32 class=data
format db "%s",0
s1 db "1","3","6","2","3","10"
l equ $-s1
s2 db "6","3" ,"11","1","2", "5"
d times l db 0
segment code use32 class=code
start:
mov esi,0
mov edi,0
cld
Repeta:
mov al,[s1+esi]
mov bl,[s2+esi]
cmp al,bl
jg et1
mov[d+edi],bl
inc edi
inc esi
jmp et2
et1:
mov[d+edi],al
inc edi
inc esi
et2:
cmp esi,l
jne Repeta
push d
push format
call[printf]
add esp,4*2
push dword 0
call [exit]
我只是想知道是否有办法按第二个大号对每行文字进行排序,我看了,我似乎无法找到任何东西。正确的方向上的一点或一些指导将是惊人的,因为我目前难以理解,因为我需要这样做才能进一步发展。
答案 0 :(得分:1)
把它放在你的while循环之后
java.util.Collections.sort(txtLine, new Comparator<String>() {
public void compare(String lineA, String lineB) {
String wordA2 = lineA.split(" ")[1];
String wordB2 = lineB.split(" ")[1];
return wordA2.compareTo(wordB2);
}
});
可以更高效地完成,但代码不会比这短得多(除非你使用lambdas)。
java.util.Collections.sort(txtLine, (String lineA, String lineB) -> {
String wordA2 = lineA.split(" ")[1];
String wordB2 = lineB.split(" ")[1];
return wordA2.compareTo(wordB2);
});
答案 1 :(得分:1)
您可以通过创建列表流来完成手头的任务,将String a = "15.5+0.5";
Double b = Double.parseDouble(a);
System.out.println(b);
对象传递给Comparator
方法以定义排序键,然后收集它变成sorted
。
用数字比较:
ArrayList
按字符串比较:
txtline = txtline.stream()
.sorted(Comparator.comparingLong((String e) -> Long.parseLong(e.split(" ")[1])))
.collect(Collectors.toCollection(ArrayList::new));