java集合代码_java集合代码示例

一、List

ArrayList

使用List时,最好初始化容量。

ArrayList的默认容量为10,每次扩容增0.5倍,假如要放置100个元素,需要多次扩容。

List list=new ArrayList<>(100);

String数组转List,使用Arrays.asList。

String[] stryArray=new String[]{"str1","str2","str3"};

List list=Arrays.asList(strArray);

String(以逗号隔开)转List:

public static List stringToList(String strs){

if (strs==null) {

return null;

}

String[] str = strs.split(",");

return Arrays.asList(str);

}

注意,通过Arrays.asList转换的List,不可以使用add()方法。如果使用的话,会报错:java.lang.UnsupportedOperationException

可以使用以下方式在新的List中添加数据:

String[] stryArray=new String[]{"str1","str2","str3"};

List list=Arrays.asList(strArray);

List strList=new ArrayList<>(list);

strList.add("test");

List转成String数组,使用toArray()方法。

List list = new ArrayList(2);

list.add("test1");

list.add("test2");

String[] array = new String[list.size()];

array = list.toArray(array);

List转String,用逗号隔开的,可以使用String.join(",",list)。也可以使用其他的分隔符。

如下:

List list=new ArrayList<>();

list.add("shen");

list.add("zhen");

list.add("shi");

String words= String.join(",",list);

System.out.println(words);

List转int[]数组,使用java8的stream()。

int[] arr = list.stream().mapToInt(Integer::valueOf).toArray();

int[]数组转List,如下:

int[] arr = {4, 5, 3, 6, 2, 5, 1};

List list = Arrays.stream(arr).boxed().collect(Collectors.toList());

判断集合个数是否为空。

if (list!=null && list.size==0 ){

//...

}

更推荐的做法是:

使用apache的工具类CollectionUtils.isEmpty()。

if (CollectionUtils.isNotEmpty(list)) {

}

删除list中的元素:

想要遍历集合,删除元素,必须使用Iterator()。如果使用foreach(),可能会报错"ConcurrentModificationException"。

public void removeElement() {

//如果采用Arrays.asList(),是不能对集合进行增删操作的。

List list = new ArrayList<>();

list.add("1");

list.add("2");

Iterator iterator = list.iterator();

while (iterator.hasNext()) {

String item = iterator.next();

if (item==null) {

iterator.remove();

}

}

}

更方便的写法,如下:

public void removeElement() {

List list = new ArrayList<>();

list.add("1");

list.add("2");

//removeIf(),内部使用的就是Iterator()。

list.removeIf(Objects::isNull);

}

交换集合中元素的位置,可以使用Collections.swap()方法实例:

Collections.swap(List>, int, int) 方法被用于交换在指定列表中的指定位置的元素。

LinkedList

在增删比较多的场景下,使用LinkedList。

返回空的List,不要返回null。

返回null,容易导致空指针异常。

可以使用Collections.emptyList(),表示的是空集合。

示例如下:

public List queryBillFiles(BillFiles billFiles) {

//以下是一个简单的数据库查询

List billFilesList=billFilesMapper.queryBillFiles(billFiles);

if(billFilesList==null) {

billFilesList= Collections.emptyList();

}

return billFilesList;

}

二、Set

HashSet

去重:可以使用Set不重复的特性进行去重。

将集合作为HashSet()构造方法的参数。

HashSet(Collection extends E> c)

Set的size和原来集合的size相同,说明没有重复数据。也可以用contains()判断。

示例如下:

List list=new ArrayList<>();

list.add("123");

list.add("456");

Set set = new HashSet<>(list);

for (String s : set) {

System.out.println(s);

}

也可以放入map的values集合:

Map map = new HashMap<>();

Set set = new HashSet<>(map.values());

if( map.size() == set.size()){

}

//if(set.contains()){}

三、Map

HashMap

遍历HashMap,代码如下:

Map map=new HashMap();

map.put(1,"banana");

map.put(2,"apple");

//遍历entrySet()返回的Set,其中每一个元素都是Map.Entry类型的,再通过getKey()、getValue()获取键值对

//以下的Map为接口名,map为Map接口声明的变量。

for (Map.Entry entry : map.entrySet()) {

System.out.println("键:"+entry.getKey() + ",值: " + entry.getValue());

}

map.keySet():获取所有的key

map.values() :获取所有的value

使用map.getOrDefault(Object key, V defaultValue)。如果key不存在,返回默认值。

比如,用key存储字符串,用value统计次数。如下:

Map map = new HashMap<>();

String word="s";

int count=map.getOrDefault(word, 0);

map.put(word, count+ 1);

使用compute(),对map中的k和v进行计算。

compute(K key,

BiFunction super K, ? super V, ? extends V> remappingFunction)

第一个参数是key,第二个参数是匿名函数式,(k,v)-> 后面就是对key和value的具体处理逻辑。

示例如下:

Map map = new HashMap<>();

String word="s";

Integer count=map.compute(word,(k,v)->{

if (v==null){

return 0;

}

return v+1;

});

待补充。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值