Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java搜索字符串_Java_Search - Fatal编程技术网

Java搜索字符串

Java搜索字符串,java,search,Java,Search,我正在开发一个基于swing的应用程序。其中有一个JTable。数据以两种方式填充到JTable中- 用户选择一个文件(文件选择器等)。应用程序将数据加载到JTable中 应用程序轮询某些网络参数上的消息。当消息到达时,它将加载到JTable中 现在我想给用户一个搜索选项。当他在jDialog框中键入任何字符串时,应用程序应该关注字符串与表中行数据匹配的特定行。填充表时,表模型会发生变化。每一行都是向量,所以表就是向量的向量。 什么样的数据结构适用于此?循环遍历每一行向量并进行搜索?搜索是在表的

我正在开发一个基于swing的应用程序。其中有一个JTable。数据以两种方式填充到JTable中-

  • 用户选择一个文件(文件选择器等)。应用程序将数据加载到JTable中
  • 应用程序轮询某些网络参数上的消息。当消息到达时,它将加载到JTable中
  • 现在我想给用户一个搜索选项。当他在jDialog框中键入任何字符串时,应用程序应该关注字符串与表中行数据匹配的特定行。填充表时,表模型会发生变化。每一行都是向量,所以表就是向量的向量。
    什么样的数据结构适用于此?循环遍历每一行向量并进行搜索?

    搜索是在表的模型上完成的-您是向量的向量。如果您正在执行freetext搜索(并且不想计算索引),那么您的数据结构是合适的,因为您必须测试每个单元格是否包含搜索字符串或与模式匹配。基本上你想做这样的事情:

    List<List<String>> tableModel = getTableModel(); // some magic at the beginning
    String searchString = getSearchString();
    
    for (List<String> row:tableModel) {
      for (String cell:row) {
        if (cell.contains(searchString)) {
           // We've found one cell that contains the search string
        }
      }
    }
    
    List tableModel=getTableModel();//一开始有些魔力
    String searchString=getSearchString();
    对于(列表行:tableModel){
    用于(字符串单元格:行){
    if(单元格包含(搜索字符串)){
    //我们找到了一个包含搜索字符串的单元格
    }
    }
    }
    
    谢谢。这就是我想做的。但我想知道,是否有更好的方法。表中的行数从1到最多200行不等。每行有6个字段。@Chirota-如果您只需要访问1200个单元格,则不必关心性能。对于更大的模型,人们可以考虑索引输入数据并使用像Lucene这样的库,但是这是一个很大的努力,并且在你的场景中是不值得的。如果你只运行到1200个比较,我就不会担心效率。