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

636

被折叠的 条评论
为什么被折叠?



