去除list集合中为空的String[]数组

本文探讨了在Java中从List集合中移除元素时遇到的问题,特别是当使用for循环进行遍历时,集合大小变化导致的遍历不完全。文章提供了一个解决方案,通过使用迭代器(Iterator)来正确地移除元素,避免了遍历过程中的并发修改异常。

 在移除list中的元素时,我们每次移除一个元素,list集合的size()都会发生改变,平时使用的for循环就无法完整的遍历完整个集合.

例如:

public static void main(String[] args) {
        List<String[]> list = new ArrayList<>();
        String[] str1 = {"",""};
        String[] str2 = {"",""};
        String[] str3 = {"1","1"};
        String[] str4 = {"2","2"};
        list.add(str1);
        list.add(str2);
        list.add(str3);
        list.add(str4);
        for(int i=0;i<list.size();i++){
            StringBuffer sb = new StringBuffer();
            String[] str = list.get(i);
            sb.append(str[0]);
            sb.append(str[1]);
            if(StringUtils.isBlank(sb.toString())){
                list.remove(i);
            }
        }
        for(int i=0 ;i<list.size();i++){
            System.out.println(list.get(i)[0]+"======"+list.get(i)[1]);
        }
    }

输出结果
======
1======1
2======2

可以看到输出的结果明显不是我们想要看到的,所以我们创建一个工具类,使用list的迭代器来移除一个元素,方法如下


public class ListUtil {
    public static List<String[]> changeList(List<String[]> list) {
        if (list == null) {
            return null;
        }
        if (list.size() > 0) {//移除全为空的行{null,null,null...} 或 {"","",""...}
            Iterator<String[]> iter = list.iterator();//获取迭代器
            while(iter.hasNext()){
                StringBuffer str = new StringBuffer();//每行的数据和
                String[] strings = iter.next();//取下一行
                for(String s : strings ){
                    if(StringUtils.isNotBlank(s)){
                        str.append(s);
                    }
                }
                if(StringUtils.isBlank(str.toString())){//一行为空,移除一行
                    iter.remove();
                }
            }
        }
        if(list.size()>0){
            return list;
        }else{
            return null;
        }
    }
}

 

/* ========== Information.java ========== */ package com.example.kucun2.entity; import android.annotation.SuppressLint; import androidx.annotation.Keep; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; @Keep // 防止Proguard混淆 public class Information<T> { private Integer status; private String text; private T data; // 使用泛型保证类型安全 private static final Gson gson = new Gson(); // Gson实例复用 // 构造方法 public Information(Integer status, String text, T data) { this.status = status; this.text = text; this.data = data; } // JSON反序列化构造方法 @SuppressLint("NewApi") public Information(Integer status, String text, String jsonData, Type dataType) { this.status = status; this.text = text; try { this.data = gson.fromJson(jsonData, dataType); } catch (JsonSyntaxException e) { this.data = null; // 处理解析失败 } } // 构造方法 public Information() {} // 序列化为JSON public String toJson() { return gson.toJson(this); } // 静态创建方法 public static <T> Information<T> newSuccess(T data) { return new Information<>(200, "success", data); } public static Information<String> newSuccess(String text) { return new Information<>(200, "success", text); } public static <T> Information<T> newFail(int status, String text, T data) { return new Information<>(status, text, data); } // Getter/Setter public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public String getText() { return text; } public void setText(String text) { this.text = text; } public T getData() { return data; } public void setData(T data) { this.data = data; } } /* ========== Jinhuo.java ========== */ package com.example.kucun2.entity; import java.util.Date; /** * 进货消耗类 */ public class Jinhuo { private Integer id; //属于哪个订单 private Dingdan dingdan; //属于哪个产品 private Chanpin chanpin; //属于哪个组件 private Zujian zujian; //进的什么板材 private Bancai bancai; //进货数量 private Integer shuliang; private Date date; private User user; public Jinhuo(Integer id, Dingdan dingdan, Chanpin chanpin, Zujian zujian, Bancai bancai, Integer shuliang, Date date, User user) { super(); this.id = id; this.dingdan = dingdan; this.chanpin = chanpin; this.zujian = zujian; this.bancai = bancai; this.shuliang = shuliang; this.date = date; this.user = user; } public Jinhuo() { super(); // TODO Auto-generated constructor stub } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Dingdan getDingdan() { return dingdan; } public void setDingdan(Dingdan dingdan) { this.dingdan = dingdan; } public Chanpin getChanpin() { return chanpin; } public void setChanpin(Chanpin chanpin) { this.chanpin = chanpin; } public Zujian getZujian() { return zujian; } public void setZujian(Zujian zujian) { this.zujian = zujian; } public Bancai getBancai() { return bancai; } public void setBancai(Bancai bancai) { this.bancai = bancai; } public Integer getShuliang() { return shuliang; } public void setShuliang(Integer shuliang) { this.shuliang = shuliang; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } /* ========== Kucun.java ========== */ package com.example.kucun2.entity; /** * 库存 */ public class Kucun { private Integer id; private Integer shuliang; private Bancai bancai; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getShuliang() { return shuliang; } public void setShuliang(Integer shuliang) { this.shuliang = shuliang; } public Bancai getBancai() { return bancai; } public void setBancai(Bancai bancai) { this.bancai = bancai; } public Kucun() { } public Kucun(Integer id, Integer shuliang, Bancai bancai) { this.id = id; this.shuliang = shuliang; this.bancai = bancai; } } /* ========== Mupi.java ========== */ package com.example.kucun2.entity; import android.annotation.SuppressLint; import java.util.List; public class Mupi { private Integer id; private String name; /** * 是否有油漆 */ private Boolean you; public Boolean getYou() { return you; } public void setYou(Boolean you) { this.you = you; } private List<Bancai> bancais; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Bancai> getBancais() { return bancais; } public void setBancais(List<Bancai> bancais) { this.bancais = bancais; } public Mupi() { } public Mupi(Integer id, String name, List<Bancai> bancais) { this.id = id; this.name = name; this.bancais = bancais; } } /* ========== User.java ========== */ package com.example.kucun2.entity; /** * 用户 */ public class User { private Integer id; private String name; private String andy; private String pass; private Integer role; public int getId() { return id; } public String getName() { return name; } public String getAndy() { return andy; } public String getPass() { return pass; } public int getRole() { return role; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setAndy(String andy) { this.andy = andy; } public void setPass(String pass) { this.pass = pass; } public void setRole(int role) { this.role = role; } public User(int id, String name, String andy, String pass, int role) { this.id = id; this.name = name; this.andy = andy; this.pass = pass; this.role = role; } public User() { } @Override public String toString() { StringBuilder sb = new StringBuilder("{"); // 处理属性名 sb.append("\"id\": "); // 处理不同数据类型 // 其他对象类型 sb.append((id != null) ? id : "null"); sb.append(","); // 处理属性名 sb.append("\"name\": "); // 处理不同数据类型 // 字符串类型处理(含转义) sb.append("\"") .append(name .replace("\\", "\\\\") .replace("\"", "\\\"") .replace("\b", "\\b") .replace("\f", "\\f") .replace("\n", "\\n") .replace("\r", "\\r") .replace("\t", "\\t")) .append("\""); sb.append(","); // 处理属性名 sb.append("\"andy\": "); // 处理不同数据类型 // 字符串类型处理(含转义) sb.append("\"") .append(andy .replace("\\", "\\\\") .replace("\"", "\\\"") .replace("\b", "\\b") .replace("\f", "\\f") .replace("\n", "\\n") .replace("\r", "\\r") .replace("\t", "\\t")) .append("\""); sb.append(","); // 处理属性名 sb.append("\"pass\": "); // 处理不同数据类型 // 字符串类型处理(含转义) sb.append("\"") .append(pass .replace("\\", "\\\\") .replace("\"", "\\\"") .replace("\b", "\\b") .replace("\f", "\\f") .replace("\n", "\\n") .replace("\r", "\\r") .replace("\t", "\\t")) .append("\""); sb.append(","); // 处理属性名 sb.append("\"role\": "); // 处理不同数据类型 // 其他对象类型 sb.append((role != null) ? role : "null"); sb.append("}"); return sb.toString(); } } /* ========== Zujian.java ========== */ package com.example.kucun2.entity; /** * 组件 */ public class Zujian { private Integer id; private String name; public Zujian() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } /* ========== Bancai.java ========== */ package com.example.kucun2.entity; import android.annotation.SuppressLint; //板材 public class Bancai { private Integer id; private Caizhi caizhi; private Mupi mupi1; private Mupi mupi2; private Double houdu; public Bancai() { } public Bancai(Integer id, Caizhi caizhi, Mupi mupi1, Mupi mupi2, Double houdu) { this.id = id; this.caizhi = caizhi; this.mupi1 = mupi1; this.mupi2 = mupi2; this.houdu = houdu; } public Integer getId() { return id; } public Caizhi getCaizhi() { return caizhi; } public Mupi getMupi1() { return mupi1; } public Mupi getMupi2() { return mupi2; } public Double getHoudu() { return houdu; } public void setId(Integer id) { this.id = id; } public void setCaizhi(Caizhi caizhi) { this.caizhi = caizhi; } public void setMupi1(Mupi mupi1) { this.mupi1 = mupi1; } public void setMupi2(Mupi mupi2) { this.mupi2 = mupi2; } public void setHoudu(Double houdu) { this.houdu = houdu; } /** * 表格中显示的文字 * @return */ @SuppressLint("DefaultLocale") public String TableText(){ String boardInfo=""; boardInfo +=String.format("%.1f", this.getHoudu())+this.getCaizhi().getName()+"("; if (mupi1 != null) { boardInfo += (this.getMupi1().getYou()?this.getMupi1().getName()+"油":this.getMupi1().getName()); } if (mupi2 != null&&mupi1 != null) { boardInfo+=","; } if (mupi2 != null) { boardInfo += (this.getMupi2().getYou()?this.getMupi2().getName()+"油":this.getMupi2().getName()); } boardInfo+=")"; return boardInfo; } } /* ========== Caizhi.java ========== */ package com.example.kucun2.entity; import java.util.List; //材质 public class Caizhi { private Integer id; private String name; private List<Bancai> bancais; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Bancai> getBancais() { return bancais; } public void setBancais(List<Bancai> bancais) { this.bancais = bancais; } public Caizhi() { } public Caizhi(Integer id, String name, List<Bancai> bancais) { this.id = id; this.name = name; this.bancais = bancais; } } /* ========== Chanpin.java ========== */ package com.example.kucun2.entity; import java.util.List; //产品 public class Chanpin { private Integer id; private String name; private List<Chanpin_Zujian> zujians; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Chanpin_Zujian> getZujians() { return zujians; } public void setZujians(List<Chanpin_Zujian> zujians) { this.zujians = zujians; } public Chanpin() { } } /* ========== Chanpin_Zujian.java ========== */ package com.example.kucun2.entity; //产品组件关联 public class Chanpin_Zujian { private Integer id; private Chanpin chanpin; private Zujian zujian ; private Double one_several; private Bancai bancai; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Chanpin getChanpin() { return chanpin; } public void setChanpin(Chanpin chanpin) { this.chanpin = chanpin; } public Zujian getZujian() { return zujian; } public void setZujian(Zujian zujian) { this.zujian = zujian; } public Double getOne_several() { return one_several; } public void setOne_several(Double one_several) { this.one_several = one_several; } public Bancai getBancai() { return bancai; } public void setBancai(Bancai bancai) { this.bancai = bancai; } public Chanpin_Zujian() { } } /* ========== Dingdan.java ========== */ package com.example.kucun2.entity; import java.util.Date; import java.util.List; /** * 订单 */ public class Dingdan { private Integer id; private String number; private List<Dingdan_Chanpin> chanpins; private Date xiadan; private Date jiaohuo; public Date getXiadan() { return xiadan; } public void setXiadan(Date xiadan) { this.xiadan = xiadan; } public Date getJiaohuo() { return jiaohuo; } public void setJiaohuo(Date jiaohuo) { this.jiaohuo = jiaohuo; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public List<Dingdan_Chanpin> getChanpins() { return chanpins; } public void setChanpins(List<Dingdan_Chanpin> chanpins) { this.chanpins = chanpins; } public Dingdan() { } } /* ========== Dingdan_Bancai.java ========== */ package com.example.kucun2.entity; /**、 * 订单板材关联 */ public class Dingdan_Bancai { private Integer id; private Dingdan dingdian; private Chanpin_Zujian zujian; private Bancai bancai; private Integer shuliang; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Dingdan getDingdian() { return dingdian; } public void setDingdian(Dingdan dingdian) { this.dingdian = dingdian; } public Chanpin_Zujian getZujian() { return zujian; } public void setZujian(Chanpin_Zujian zujian) { this.zujian = zujian; } public Bancai getBancai() { return bancai; } public void setBancai(Bancai bancai) { this.bancai = bancai; } public Integer getShuliang() { return shuliang; } public void setShuliang(Integer shuliang) { this.shuliang = shuliang; } public Dingdan_Bancai() { } } /* ========== Dingdan_Chanpin.java ========== */ package com.example.kucun2.entity; /** * 订单产品关联 */ public class Dingdan_Chanpin { private Integer id; private Dingdan dingdan; private Chanpin chanpin; private Integer shuliang; public Integer getShuliang() { return shuliang; } public void setShuliang(Integer shuliang) { this.shuliang = shuliang; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Dingdan getDingdan() { return dingdan; } public void setDingdan(Dingdan dingdan) { this.dingdan = dingdan; } public Chanpin getChanpin() { return chanpin; } public void setChanpin(Chanpin chanpin) { this.chanpin = chanpin; } public Dingdan_Chanpin() { } } <string name="url">https://tian.sef/Kucun2</string> <string name="url_all">/app/all</string> <string name="url_bancis">/app/bancai/all</string> <string name="url_caizhis">/app/caizhi/all</string> <string name="url_mupis">/app/mupi/all</string> <string name="url_dingdans">/app/dingdan/all</string> <string name="url_chanpins">/app/chanpin/all</string> <string name="url_zujians">/app/zujian/all</string> <string name="url_chanpin_zujians">/app/chanpin_zujian/all</string> <string name="url_dingdan_zujians">/app/dingdan_zujian/all</string> <string name="url_dingdan_chanpins">/app/dingdan_chanpin/all</string> <string name="url_jinhuos">/app/jinhuo/all</string> <string name="url_add_bancai">/app/bancai/add</string> <string name="url_add_dingdan">/app/dingdan/add</string> <string name="url_add_chanpin">/app/chanpin/add</string> <string name="url_add_zujian">/app/zujian/add</string> <string name="url_add_caizhi">/app/caizhi/add</string> <string name="url_add_mupi">/app/mupi/add</string> <string name="url_add_dingdan_chanpin">/app/dingdan_chanpi/add</string> <string name="url_add_dingdan_zujian">/app/dingdan_zujian/add</string> <string name="url_add_chanpin_zujian">/app/chanpin_zujian/add</string> <string name="url_add_jinhuo">/app/jinhuo/add</string> <string name="url_login">/user/login</string> public class Data { // 数据集合声明 public final static List<Bancai> bancais = new ArrayList<>(); public final static List<Caizhi> caizhis = new ArrayList<>(); public final static List<Mupi> mupis = new ArrayList<>(); public final static List<Chanpin> chanpins = new ArrayList<>(); public final static List<Chanpin_Zujian> chanpinZujians = new ArrayList<>(); public final static List<Dingdan> dingdans = new ArrayList<>(); public final static List<Dingdan_Chanpin> dingdanChanpins = new ArrayList<>(); public final static List<Dingdan_Bancai> dingdanBancais = new ArrayList<>(); public final static List<Kucun> kucuns = new ArrayList<>(); public final static List<Zujian> zujians = new ArrayList<>(); public final static List<User> users = new ArrayList<>(); public final static AbstractCollection<Jinhuo> jinhuoList=new ArrayList<>(); /app/all返回json数据{"status":"200","text":"success","data":{"bancais":[{"houdu":15.0,"mupi1":{"id":1},"mupi2":{"id":1},"caizhi":{"id":1},"kucun":{"id":1},"id":1},{"houdu":15.0,"mupi1":{"id":2},"mupi2":{"id":2},"caizhi":{"id":1},"kucun":{"id":2},"id":2}],"dingdans":[{"dingdanChanpinZujianIds":[],"number":"直接入库","id":1,"dingdanChanpinIds":[1]}],"mupis":[{"name":"千和板","id":1,"you":null},{"name":"桃花芯","id":2,"you":null},{"name":"杉木","id":3,"you":null}],"chanpins":[{"chanpinZujianIds":[1],"bianhao":"直接入库","id":1,"dingdanChanpinIds":[1]}],"kucuns":[{"bancaiId":1,"shuliang":12,"id":1},{"bancaiId":2,"shuliang":32,"id":2}],"chanpin_zujians":[{"chanpinId":1,"bancaiId":1,"id":1,"zujianId":1,"one_howmany":15.0}],"zujians":[{"chanpinZujianIds":[1],"name":"前板","id":1}],"caizhis":[{"name":"千和板","bancai":[{"id":1},{"id":2}],"id":1},{"name":"杉木","bancai":[],"id":3},{"name":"桃花芯","bancai":[],"id":2}],"users":[{"role":0,"name":"超管","id":1,"andy":"123456"}]} 虚拟数据类改造为从api获取数据
最新发布
06-09
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值