检查hasPrevious的元素

时间:2018-10-15 08:43:56

标签: java arraylist apache-poi

我的代码的主要思想是,我想在找到“ c”后进行检查

A B C D 
    ^

然后它将检查Arraylist中的上一个元素是否包含“ b”。如果包含“ b”,则将输出“ VALID”

请帮助我解决此问题。预先感谢。

public static void main(String[] args) {
    try {
        FileInputStream file = new FileInputStream(new File("C:XX"));
        XSSFWorkbook wb = new XSSFWorkbook(file);
        XSSFSheet sheet = wb.getSheetAt(0);

        DataFormatter formatter = new DataFormatter();

        Iterator<Row> rows = sheet.rowIterator();

        while (rows.hasNext()) {
            XSSFRow row = (XSSFRow) rows.next();
            Iterator cells = row.cellIterator();

            ArrayList<String> al = new ArrayList<String>();

            while (cells.hasNext()) {
                XSSFCell cell = (XSSFCell) cells.next();
                String stringcell = formatter.formatCellValue(cell);
                al.add(stringcell);
            }

            // row
            ListIterator<String> listIterator = al.listIterator();

            if (al.contains("c")) {
                while (listIterator.hasPrevious()) {
                    String element = listIterator.previous();
                    if (element.contains("b")) {
                        System.out.println("VALID");
                        break;
                    }
                }
            }

            System.out.println("");

        }

    } catch (Exception e) {
        e.printStackTrace();
    }

}

2 个答案:

答案 0 :(得分:2)

不仅要跟踪先前看到的值:

ListIterator<String> listIterator = al.listIterator();
String element;
String prev = "";

while (listIterator.hasNext()) {
    element = listIterator.next();
    if (element.contains("c") && prev.contains("b")) {
        System.out.println("VALID");
        break;
    }
    prev = element;
}

注意:此答案假设您有一个字符串列表,您想在其中询问是否有任何字符串包含字母bc的问题。相反,如果要检查列表是否包含整个字符串bc,请使用上面@Eran的答案。

答案 1 :(得分:2)

您不需要ListIterator。使用contains代替indexOf。如果“ c”的索引为正,则检查前一个索引的元素是否为“ b”。

int pos = al.indexOf ("c");
if (pos > 0) {
    if (al.get(pos-1).equals("b")) {
        System.out.println("VALID");
    }
}