比较字符串列表的元素

时间:2014-11-25 17:40:34

标签: java string list if-statement linked-list

我试图比较我通过阅读文件创建的列表的元素。

列表大小从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);  
        }   
    }
}

2 个答案:

答案 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)对列表进行排序,您可以在其中定义自己的比较器,以便按照您的方式比较字符串。