(Java)基础:集合的学习

博主在项目处理数据时,需将字符串转换为集合类型,测试了map、set等类型,最终用set实现。考虑用framemarker在前端输出后台集合数据。原本想用数组存放数据但未成功,集合则很实用。还探讨了集合读取顺序问题,最终找到符合顺序要求的LinkedHashSet。

今天做项目需要处理数据的时候,需要用到将字符串转换为集合类型,输出样式是:[store, address,...],书到用时方恨少,发现自己集合这个模块实在是弱项,并没有扎实,于是自己百度,测试了几个,有map类型,有set类型,最后实现效果的还是set,

//定义set集合

Set<String> set = new HashSet<String>();

//将String类型加入到set集合中

set.add(名称);

考虑用到framemarker,在前端输出后台的数据,framemarker可以输出集合形式的数据,样式如下:

这里的store与address均是从后台以集合形式获取,然后前台界面显示,PS:framemarker的循环输出集合形式数据格式为:

<#list set as x>

${x}

</#list>

本来是打算使用数组来存放数据的,思考两天了发现竟然不行,难道是因为里面有个while循环吗,

while(i!=-1&&j!=-1){
                String shuxing1 = tem.substring(i+2, j);
             for(int t=0;t<100;t++){

      shuzu[t] = shuxing1
                i=tem.indexOf(key,i+1);
                j=tem.indexOf(key1,j+1);
               }
                }

在这种情况下,数组实现不了的时候,集合真的就是太好用了!

但是正确的读取出来的顺序应该是这样的:addressstorename,但是使用hashset读取出来的顺序却是storeaddressname,如果想要读取出来的顺序与输入 的顺序一致,该怎么做呢?

有序有序,首先可以想到SortedSet,继承于set,其中TreeSet是SortedSet的唯一实现类,采用树的结构,有序,不重复,但是,他这里的有序是对象之间的比较顺序,而不是插入时的顺序,其输出的结果则为[address, name, store]

接下来可以想到set集合下的实现类LinkedHashSet,输入输出的顺序一致,输出的顺序为:[address, store, name],符合要求!

贴上一个写的很好的关于集合的阐述的链接:https://www.cnblogs.com/ysocean/p/6555373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值