java list 添加到第一个_list中的 某一条数据添加到首位或者最后一位

1. list集合几种用法

在项目开发过程中,有时候会有这样的需求,比如自己项目中的地址列表:

情景一:

地址列表中有2种地址,第一种是默认地址,第二种是非默认地址,如果有默认地址,就把默认地址置顶,否则服务器返回的地址列表的就是按照时间排序的,最新添加的地址在最下边,最早添加的在最上边;

情景二:

在确认订单页面需要设置收货地址,需要请求地址列表接口,根据返回的list集合判断,如果集合中有默认地址就设置默认地址,否则就设置最新添加的地址;

上边这两种情况会用到:把 list中的 某一条数据添加到list集合的首位或者最后一位;

2. 解决方案

对于地址列表展示默认地址置顶,其他地址按照服务器返回顺序显示即可:

第一步:首先请求地址列表接口,服务器返回addressList集合;

第二步:然后遍历 addressList集合,取出 status,判断如果 status = 1,取出 i 位置对应的 dataBean 实体类对象,并且把 i 位置 remove移除掉,然后重新把 dataBean添加到 addressList集合的首位;

第三步:然后在给 lv或者rv列表显示数据时候就可以直接使用 变换之后的 addressList集合;

// 遍历 addressList集合

for (int i = 0; i < addressList.size(); i++) {

// 获取 status

int status = addressList.get(i).getStatus();

// 如果 status=1,表示 有默认地址

if (status == 1){

// 然后取出 i 位置对应的 实体类对象数据

ShowAddreessBean.DataBean dataBean = addressList.get(i);

// 并且移除 i 位置

addressList.remove(i);

// 然后把 取出的默认地址 dataBean 重新添加到 addressList中,

// 这个集合第一个位置的数据就是 默认地址,然后就可以直接用于 给 lv或者rv 填充数据即可

addressList.add(0,dataBean);

Log.e("TAG" , "集合:"+addressList.size()+", 对应json:"+new Gson().toJson(addressList)) ;

}

}

对于确认订单页面设置收货地址做法:

第一步:首先请求地址列表接口,服务器返回list集合;

第二步:然后遍历list集合,如果集合中有默认地址,就取出默认地址对应的实体类对象,并且把该位置的数据remove移除掉,然后重新把 这条取出的默认地址的数据添加到 list集合中的首位或者最后一位;

// 下边的:status 为1表示默认地址;为0表示非默认地址

// addressList集合 是服务器返回的地址列表集合

// 遍历 addressList集合

for (int i = 0; i < addressList.size(); i++) {

// 取出status

int status = addressList.get(i).getStatus();

// 如果status = 1:表示默认地址,

if (status == 1){

// 首先 取出位置 i 对应的实体类dataBean

ShowAddreessBean.DataBean dataBean = addressList.get(i);

// 并且 从addressList集合中移除位置 i

addressList.remove(i);

// 然后 把status=1的数据dataBean 添加到集合最后一位

addressList.add(addressList.size(), dataBean);

// 然后 把status=1的数据dataBean 添加到集合第一位

// addressList.add(0, dataBean);

}

}

3. 总结

1>:需求:现在顺序是 0,2,4 , 6 , 8,把6放到首位

// 从list集合中取出角标为3的数据

Integer temp = list.get(3);

// 并且移除角标为3的位置

list.remove(3);

// 然后把刚才取出角标为3的数据重新添加到 list集合中即可

list.add(0, temp);

2>:对于list集合,要注意的地方:

for (int i = 0; i < addressList.size(); i++) {

int status = addressList.get(i).getStatus();

if (status == 1){

ShowAddreessBean.DataBean dataBean = addressList.get(i);

addressList.remove(i);

// 把status=1的数据添加到集合最后一位,

// 注意:这里是addressList.size(),不是addressList.size()-1

addressList.add(addressList.size(), dataBean);

// 把status=1的数据添加到集合第0位

// addressList.add(0 , dataBean);

}

}

// 获取集合最后一个元素,这里是 addressList.size() - 1,这个是最后一个元素的角标

String location = addressList.get(addressList.size() - 1).getLocation() ;

String mobile = addressList.get(addressList.size() - 1).getMobile();

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值