访问java中链表中的每个节点

时间:2014-02-14 10:35:53

标签: java

String str = "You can use either Iterator or ListIterator for traversing on Java ArrayList";
        String[] words = str.split(" ");
        LinkedList<String> linkedlist=new LinkedList<String>();
        for (int i = 0; i <= words.length-1; i++) {
              linkedlist.add(words[i]);           
        }
        ListIterator itr = linkedlist.listIterator();
            Connection con = null;
            PreparedStatement pstTemp = null;
              StringBuilder tokens = new StringBuilder();
            try {
                con = DBConnection.getJndiConnection();
                StringBuffer sbQry = new StringBuffer("SELECT  englishlex FROM   lex_hindi where   (domain='Tourism' or domain='Zgeneral') and englishlex=");

                while (itr.hasNext()) {
                    System.out.println(itr.next());

                    tokens.append(itr.next());
                    sbQry.append("'"+tokens+ "',");
                    System.out.println(tokens.toString());


                }

                sbQry.append(" order by length(englishlex) desc");
                tokens.setLength(0);

            } catch (SQLException ex) {
                Logger.getLogger(PhraseMarker.class.getName()).log(Level.SEVERE, null, ex);
            }

我在空间基础上拆分字符串。现在我想访问linklist的每个节点并维护当前指针,我的目的是检查短语是否意味着“你可以”它是否存在于数据库中。

如果是,则将其设为“你可以”,如果没有,则开始搜索下一个令牌,即如果“使用任何一个迭代器”存在则“使用”向前然后使其“使用 - 任何 - 迭代器”其他明智的“使用”迭代器“保持原样。

我已经编写了代码,但现在如何处理我很困惑?

1 个答案:

答案 0 :(得分:0)

好吧,我可以提出一些建议    1)不需要令牌字符串缓冲区。    2)循环之后创建语句对象并获取所有值。    3)现在从结果集创建一个List    4)现在将数据库中的句子链接列表和列表发送给另一个返回结果字符串的方法    5)在Method中,创建一个StringBuffer    5a)setBollean previousWordFound = false    6)为每个单词迭代你的初始列表。    7)获取每个单词并检入另一个列表(来自结果集)使用“包含”。    8)如果在步骤7中为真          8a)previousWordFound found = true,追加你的String       初始列表中带有“ - ”否则没有          8b)previousWordFound = true    9)如果在步骤7中为假           9a)previousWordFound = false

10)将值附加到结果字符串缓冲区

11)最后返回结果。

这是程序,如果结果不符合您的预期请告诉我,我会更新我的逻辑。

public static void main(String[] args){
        String str = "You can use either Iterator or ListIterator for traversing on Java ArrayList";
        String[] words = str.split(" ");
        LinkedList<String> linkedlist=new LinkedList<String>();
        for (int i = 0; i <= words.length-1; i++) {
            linkedlist.add(words[i]);
        }
        //Do your data base activitites

        //Assume your List as below
        List<String> lst = new ArrayList<String>();
        lst.add("You");
        lst.add("use");
        lst.add("either");
        System.out.print(getPharsedValue(linkedlist, lst));
    }

    private static String getPharsedValue(LinkedList<String> linkedlWords, List<String> resultData){
        StringBuffer sb = new StringBuffer();
        boolean previousWordFound = false;
        for(String word : linkedlWords){

            if (resultData != null && resultData.contains(word)){
                if(previousWordFound) {
                        word = "- " + word;
                }
                previousWordFound = true;
            } else {
                previousWordFound = false;
            }
            sb.append(word);
            sb.append(" ");
        }
        return sb.toString();
    }

结果:您可以使用 - Iterator或ListIterator遍历Java ArrayList