gpt4 book ai didi

java - 如果其他 ArrayList 中的条件为 true,如何从 ArrayList 中删除项目

转载 作者:行者123 更新时间:2023-11-30 01:51:43 26 4
gpt4 key购买 nike

我有一个包含三列的 JTable,每一列都填充有一个由 ArrayList 组成的数组。我正在尝试创建一个搜索系统,用户将在第一列中搜索值,并且 JTable 的行将被过滤掉,以便只有包含搜索框中指定字符串的行才会显示在按下按钮后的表。在另一个表上,这是通过使用此循环过滤使用的 ArrayList 来实现的:

String s = searchBar.getText();
ArrayList<String> fn = new ArrayList<>();
fn.addAll(names); //names is the arraylist that contains all the values that will be filtered
for(Iterator<String> it = fn.iterator(); it.hasNext(); ) {
if (!it.next().contains(s)) {
it.remove();
}

这段代码可以过滤掉数组,但我想做的是仅根据其中一个 ArrayList 不包含 s 字符串来过滤 3 个 ArrayList。我尝试这样做:

String s = searchBar.getText();
ArrayList<String> fn = new ArrayList<>();
ArrayList<String> fp = new ArrayList<>();
fn.addAll(names); //names is the arraylist that contains all the values that will be filtered
fp.addAll(numbers)//one of the other arraylists that I want to filter
for(Iterator<String> it = fn.iterator(), itp = fp.iterator(); it.hasNext() && itp.hasNext(); ) {
if (!it.next().contains(s)) {
itp.remove();
it.remove();
}

当我运行此代码时,我在编写“itp.remove();”的行上的线程“AWT-EventQueue-0”java.lang.IllegalStateException 中遇到异常。有没有一种方法可以仅根据其中一个数组从两个数组中删除?

最佳答案

我很高兴您修复了异常。不管怎样,当我说回迭代时,我的意思是这样的

首先,一些检查,例如

 if(fn.size()==fp.size()){
// and after that go to delete.
for (int i=fn.size(); i>0;i--) {
if (fn.contains(s)) {
fn.remove(i);
fp.remove(i);
} }}

无论如何,你和我的方法不适合多线程,因为 ArrayList 不是并发对象,它也是删除方法

关于java - 如果其他 ArrayList 中的条件为 true,如何从 ArrayList 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55767741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com