1.数组转集合

java提供了一个方法:Arrays.asList(T... a)的方法。

测试:

String[] arr  = {"Lida","huanda","zhangda"};
//数组转集合list
System.out.println(Arrays.asList(arr));
输出结果:
[Lida, huanda, zhangda] 这里需要注意的一点是,转出来的集合不能执行新增,删除等操作,如果执行list.add("xxx");会报错
java.lang.UnsupportedOperationException ,通过查看源码,Arrays.asList()返回new ArrayList<>(a),但这个和ArrayList有一些区别,这里返回的是java.util.Arrays$ArrayList,Arrays的内部类
部分源码:
/**
* @serial include
*/
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
private static final long serialVersionUID = -2764017481108945198L;
private final E[] a; ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
该类继承了AbstractList,AbstractList继承了AbstractCollection,AbstractCollection里有add()和remove()方法,但都是抛出一个异常,并没有处理,继承的这些类都没有对这些方法进行重写,所以会报错。
部分源码:
public void add(int index, E element) {
throw new UnsupportedOperationException();
} /**
* {@inheritDoc}
*
* <p>This implementation always throws an
* {@code UnsupportedOperationException}.
*
* @throws UnsupportedOperationException {@inheritDoc}
* @throws IndexOutOfBoundsException {@inheritDoc}
*/
public E remove(int index) {
throw new UnsupportedOperationException();
} 2.集合转数组
例如:list转数组,java提供了两种方法:1.list.toArray();2.list.toArray(T[] a);
测试:
//第一种方式
List<String> list = new ArrayList();
list.add("lisi");
list.add("wangwu");
list.add("zhangsan");
*String[] str =(String[]) list.toArray();
//list.toArray()返回的是Object[]类型,这里直接整体强转会报错
//ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;不能整体进行强转,还是需要单转 //第二种方式
List<String> list = new ArrayList();
list.add("lisi");
list.add("wangwu");
list.add("zhangsan");
String[] arr = new String[list.size()];
String[] str = list.toArray(arr);
所以第二种使用时会更加方便。

补充1:在java8里面有一个String.join()的方法,这个方法在工作中还是蛮实用的,这里可以将集合,数组,或一些元素,以某种间隔符隔开,例如:
String str2 = String.join(",",list);//将list集合转为字符串,并且以,隔开,输出结果:lisi,wangwu,zhangsan

String str2 = String.join(",",arr); //可以是数组,输出结果:lisi,wangwu,zhangsan
String str2 = String.join(",","lsii","wangwu","zhansan");//还可以直接写字符串,输出结果:lisi,wangwu,zhangsan
 
待更。。。。。。
 


关于java集合的一些操作的更多相关文章

  1. java集合之链式操作

    如果用过js/jquery.groovy等语言,大概对这样的代码比较熟悉: [1,2,3].map(function(d){...}).grep(function(d){...}).join(',') ...

  2. java 集合框架(List操作)

    /*list 基本操作 * * List a=new List(); * 增 * a.add(index,element);按指定位置添加,其余元素依次后移 * addAll(index,Collec ...

  3. java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

    /*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返 ...

  4. Java自学-Lambda 聚合操作

    java 集合的聚合操作 步骤 1 : 传统方式与聚合操作方式遍历数据 遍历数据的传统方式就是使用for循环,然后条件判断,最后打印出满足条件的数据 for (Hero h : heros) { if ...

  5. java集合的操作(set,Iterator)

    集合的操作 Iterator.Collection.Set和HashSet关系 Iterator<——Collection<——Set<——HashSet Iterator中的方法: ...

  6. JAVA 集合操作总结

    1.Collection 1.基本操作 对集合的基础操作 1.boolean add(Object o) //添加对象到集合 2.boolean remove(Object o) //删除指定的对象 ...

  7. JAVA集合操作异常 ---------Collections.unmodifiableCollection

    1.问题原因 这两天在做开发的时候,在一个首页的列表哪里操作了ArrayList集合,在做递归删除的时候用的是Iterator对象(至于为什么用,来个链接https://blog.csdn.net/m ...

  8. Java迭代器问题 有100个人围成一个圈从1开始报数,报到14的这个人就要退出,然后其他人重新开始,从1报数,到14退出问:最后剩下的是100人中的第几个人 用listIterator迭代元素,并对集合进行删除操作

    package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...

  9. java集合框架之聚合操作stream

    参考http://how2j.cn/k/collection/collection-aggregate/702.html#nowhere 聚合操作 JDK8之后,引入了对集合的聚合操作,可以非常容易的 ...

随机推荐

  1. leetcode438

    public class Solution {;public IList<int> FindAnagrams(string s, string p) { List<int> l ...

  2. C# 方法参数 out、ref、param 详解

    ref和out都对函数参数采用引用传递形式——不管是值类型参数还是引用类型参数,并且定义函数和调用函数时都必须显示生命该参数为 ref/out形式.两者都可以使函数传回多个结果. ref 类似于 PH ...

  3. 29 _react-router说明

    一.SPA的理解 1.单页面web应用(single page web application ,SPA) 2.整个应用只有一个完整的页面 3.点击页面中的链接不会刷新页面,本身也不会向服务器发请求 ...

  4. ArrayList实现动态数组原理

    addAll方法和申请数组大小函数 public boolean addAll(Collection<? extends E> c) { Object[] a = c.toArray(); ...

  5. <Dare To Dream 团队>第二次作业:基于B/S的家教管理系统

     团队项目GitHub仓库地址:https://github.com/Sophur/Team-Project.git  为其他团队评分结果: 小组名 N A B C D 总分 平均分 Blue Flk ...

  6. tfs填坑那些事

    1.csdn下载  安装(步1:装 步2:激活 步3:配置数据库之类 选择完全配置)激活(win7能出来,win10不出来) 注意 tfs服务开启,,代理服务开启 2.选择敏捷模板 3.无法新建项目, ...

  7. service mysqld start,Failed to start mysqld.service: Access denied

    service mysqld start 然后报: ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===Authentic ...

  8. 对于链表中tada的绝对值相等的点,仅保留第一次出现的结点而删除其余绝对值相等的点

    算法的核心思想是用空间换时间,使用辅助数组记录链表中已出现的数值  从而只需对链表进行一趟扫描 typedef struct node { int data; struct node* next; } ...

  9. OKHttp使用详解

    一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络. 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak ...

  10. cdnbest架设cdn同一个源用不同的端口访问如何设置

    在站点里的应用防火墙-->高级设置里配置 比如test.com要同时用80和88访问