关于java集合的一些操作
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集合的一些操作的更多相关文章
- java集合之链式操作
如果用过js/jquery.groovy等语言,大概对这样的代码比较熟悉: [1,2,3].map(function(d){...}).grep(function(d){...}).join(',') ...
- java 集合框架(List操作)
/*list 基本操作 * * List a=new List(); * 增 * a.add(index,element);按指定位置添加,其余元素依次后移 * addAll(index,Collec ...
- java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
/*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返 ...
- Java自学-Lambda 聚合操作
java 集合的聚合操作 步骤 1 : 传统方式与聚合操作方式遍历数据 遍历数据的传统方式就是使用for循环,然后条件判断,最后打印出满足条件的数据 for (Hero h : heros) { if ...
- java集合的操作(set,Iterator)
集合的操作 Iterator.Collection.Set和HashSet关系 Iterator<——Collection<——Set<——HashSet Iterator中的方法: ...
- JAVA 集合操作总结
1.Collection 1.基本操作 对集合的基础操作 1.boolean add(Object o) //添加对象到集合 2.boolean remove(Object o) //删除指定的对象 ...
- JAVA集合操作异常 ---------Collections.unmodifiableCollection
1.问题原因 这两天在做开发的时候,在一个首页的列表哪里操作了ArrayList集合,在做递归删除的时候用的是Iterator对象(至于为什么用,来个链接https://blog.csdn.net/m ...
- Java迭代器问题 有100个人围成一个圈从1开始报数,报到14的这个人就要退出,然后其他人重新开始,从1报数,到14退出问:最后剩下的是100人中的第几个人 用listIterator迭代元素,并对集合进行删除操作
package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...
- java集合框架之聚合操作stream
参考http://how2j.cn/k/collection/collection-aggregate/702.html#nowhere 聚合操作 JDK8之后,引入了对集合的聚合操作,可以非常容易的 ...
随机推荐
- Halcon除法
今天,用到了Halcon 的除法.求出两个region的面积,area1,area2.我想求出它们的比值area1/area2.但是发现比值是整数,没有保留小数.应该改为这样area1/real(ar ...
- leetcode200
深度优先搜索,每次遇到1,则岛的数量+1,从这个1开始找到所有相连的1,将其改为0. public class Solution { private void dfsSearch(char[,] gr ...
- Rabbitmq(7) confirm 异步模式
//存储未确认的消息标识tagfinal SortedSet<Long> confirmSet = Collections.synchronizedNavigableSet(new Tre ...
- JPA中建立数据库表和实体间映射小结
在JPA中,映射数据库表和实体的时候,需要注意一些细节如下, 实体类要用@Entity的注解: 要用 @Id 来注解一个主键: 如果跟数据库相关联,要用@Table注解相关数据库表: 实体类中字段需要 ...
- ligbox 插件介绍
浏览器支持情况:一般情况都支持.最好是jQuery v1.x + lightbox.js,这样的组合IE6,IE7,IE8也支持! 1 light插件的下载地址:https://pan.baidu.c ...
- SpringBoot的spring-boot-starter有哪些(官方)
看完这些,你就知道每个spring-boot-starter依赖些什么东西了. 地址:https://github.com/spring-projects/spring-boot/tree/v2.1. ...
- windows 远程连接“发生身份验证错误 要求的函数不受支持”
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\P ...
- mysql学习笔记--数据操作
一.插入数据 1. 语法:insert into 表名 (字段名.字段名,...) values (值1,值2...) 2. 注意: a. 插入字段的个数和顺序与值的个数和顺序必须一致 b. 通过de ...
- 测验2: Python基础语法(上) (第4周)
快乐的数字 描述 编写一个算法来确定一个数字是否“快乐”. 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无 ...
- 【读书笔记】深入应用C++11代码优化与工业级应用 读书笔记01
第一章 使用C++11让程序更简洁.更现代 1.1 类型推导 1.1.1 auto类型推导 1.auto关键字的新意义 不同于python等动态类型语言的运行时进行变量类型的推导,隐式类型定义的类 ...