繁体   English   中英

为什么 ListIterator 与 Stream 的区别

[英]Why the difference with ListIterator vs Stream

我们有一个 Dictionary txt 文件,我们将其转换为 String[ ] simpleArray
我们很少使用阵列,所以这个超出了我们的舒适区
它有这种格式的 466552 项 40 非细菌
当我们检查拼写错误的单词时,它的速度非常快
当我们 go 回到列表并检查我们使用 ListIterator 的单词的正确拼写时
根据搜索词,我们发现结果很奇怪
所以我们尝试使用 Java 8 Streams with filters 和 lambda

这是使用带有搜索词“some”的 ListIterator 的结果

somebody someday somegate someonell 某人的 Somerdale 翻筋斗
萨默塞特萨默塞特郡萨默斯维尔somesthesis somet sometime someway
有时 有时 有时 有时 有时


这是使用带有搜索词“someo”“someon”的 ListIterator 的结果


有人会分开


这是使用带有过滤器的 Steams 和 lambda 的结果,搜索词是“someon”

某人某人某人某人某人某人某人


问题是我们是否正确构建了 ListIterator 代码?
虽然代码运行它不会产生可靠的结果

如果 Stream 代码可以以不同方式构造,我们将不胜感激
目标是现在将项目添加到列表视图中,结果在文本区域中
我们之前没有使用过listview


}if(found != true){

for(indexSC = 0; indexSC < simpleArray.length;indexSC++){
if(simpleArray[indexSC].toLowerCase().contains(txtTest.getText().trim().toLowerCase())){
// array stream foreach filter results to textarea javafx
List<String> cs = Arrays.asList(simpleArray);

ArrayList list = new ArrayList<>();
cs.stream().filter(s -> s.startsWith("someon"))
  //.forEach(System.out::println); 
.forEach(list :: add);   
String aL = list.toString();
System.out.println("!!!! aL "+aL);
String La = list.toString().replace("[", "").replace("]","").replace(",", " ");
System.out.println("@@@@ Stream "+La);

txaML.appendText(La);
txaML.appendText("\n");
//list.forEach(System.out::println);


ListIterator<String> listItr = cs.listIterator();
System.out.println("%%%% Second Find "+simpleArray[indexSC]+" At indexSC "+indexSC+" L "+simpleArray[indexSC].length());
txaML.clear();
while(listItr.hasNext()){
    if(listItr.next().startsWith("someon")){

        txaML.appendText(listItr.next());
        txaML.appendText("\n");
        //txaML.appendText(listItr.next().intern());
        //txaML.appendText("\n");
        System.out.println("!!!! ListIterator "+listItr.next());
        //System.out.println("!!!!!! Next intern "+listItr.next().intern());

    }  
}

如果 Stream 代码可以以不同方式构造,我们将不胜感激

我们在您的项目中添加了一些项目,即 ComboBox 和 ListView
为什么? 如果您打算选择 Stream 生成的信息,那么在选择项目时,TextArea 是一个真正的熊(文本)
我们注意到您有一个 ArrayList 列表,Stream 将数据添加到
所以不需要所有替换代码。 我们向 ListView 添加了一个 SelectionModel 侦听器

这是带有旧剩余代码的代码
这就是 ComboBox 所需的一切

 public void CboSelect(){
 months = FXCollections.observableArrayList();
}

@FXML
public void getSP(){
    String selected = cboSP.getValue().toString();
    System.out.println("S S S selected "+selected); 
}

这是艺术的新作品哈哈

        }if(found != true){

        lvListView.setStyle("-fx-font-size:18.0;-fx-background-color: white;");
        for(indexSC = 0; indexSC < simpleArray.length;indexSC++){
        if(simpleArray[indexSC].toLowerCase().contains(txtTest.getText().trim().toLowerCase())){
        // array stream foreach filter results to textarea javafx
        List<String> cs = Arrays.asList(simpleArray);

        ArrayList list = new ArrayList<>();
        cs.stream().filter(s -> s.startsWith("someon"))
          //.forEach(System.out::println); 
        .forEach(list :: add);   
        //String aL = list.toString();
        //System.out.println("!!!! aL "+aL);
        //La = list.toString().replace("[", "").replace("]","").replace(",", "").replace(" ", "\n");
        int L = list.size();
        for(int X = 0; X < L;X++){
        String A = (String) list.get(X);
        cboSP.getItems().add(A);
        txaML.appendText(A);
        txaML.appendText("\n");
        lvListView.getItems().add(A);
        System.out.println(" = = L "+L+" Num "+A);
        }

        lvListView.getSelectionModel().selectedItemProperty()
        .addListener((observable, oldValue, newValue) -> {
        System.out.println(newValue);});

我们找不到太多关于 ListIterators 在性能方面的行为
我们看了一些关于 Streams 的 SO 帖子似乎是新的 Java 8 东西

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM