我试图比较我通过阅读文件创建的列表的元素。
列表大小从3到10个元素不等。我想查看列表中的元素,比较它们的长度(我尝试通过String = s.length()
完成它)它的工作原理,我得到了列表中每个元素的长度。
如何比较每个元素的长度?我想选择最接近2个元素的长度并确定它们的索引。
例如,如果这是输入文件:
ATGTCATGG
ATGCGATGGGGGTCGCCC
ATGTTT
最近的2个字符串的长度为3,它们的索引为0和2。
public class ListTesting {
public static void main(String[] args) throws IOException {
PrintStream output = new PrintStream(System.out);
Scanner input = new Scanner(System.in);
output.print("Enter the name of the file ");
String fileName = input.nextLine();
Scanner fileInput = new Scanner(new File(fileName));
List<String> listo = new ArrayList<String>();
String token = "";
while ( fileInput.hasNext() ) {
token = fileInput.next();
listo.add(token);
}
fileInput.close();
for ( int i =0; i < listo.size(); i++) {
String components = listo.get(i);
int lengtho = components.length();
//output.println(lengtho);
}
}
}
答案 0 :(得分:2)
如果可以更改换行顺序,则可以创建Comparator
按长度排序
public class LengthComparator implements Comparator<String> {
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
使用Collections.sort按长度对列表进行排序,然后您可以遍历排序列表,将每个字符串与下一个字符串进行比较,看看它是否比之前的最短字符串
int shortestIdx = 0;
int shortestDist = Math.abs(list.get(0).length() - list.get(1).length());
for (int idx = 0; idx < list.size(); idx++) {
//left this for you to fill in
}
答案 1 :(得分:1)
您可以使用Collections.sort(List<T> list, Comparator<? super T> c)
对列表进行排序,您可以在其中定义自己的比较器,以便按照您的方式比较字符串。