集合与数组

集合与数组的不同点

在这里插入图片描述

相同点

都是存储数据的容器,存储Object类型时,其实存储的都是对象的引用(地址)
不同点:
(1)数组可以存储基本数据类型,集合不可以;
(2)数组的长度固定,对象数量未知时不适合使用; 集合的长度可变,适用性比较广。

集合与数组间的转换

(1)数组转集合

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/*
 * 数组转成集合
 * 
 * Arrays类中提供了一个静态方法asList, 此方法可以将数组对象转换成集合对象
 * static <T> List<T> asList(T... a) 
 * 返回由指定数组支持的固定大小的列表。  
 * 返回的List的集合元素类型由传入的数组的元素类型决定
 * 
 * 注意:返回的集合我们 不能 对其进行增删元素,否则抛出异常。
 * 并且对集合的元素进行修改会影响数组对应的元素
 * 如果想对集合进行增删改,可以将此集合里的元素添加到一个新集合对象中。
 */
public class Test {

	public static void main(String[] args) {
		//声明一个数组s
		String s[] = {"aa","bb","cc"};
		//查看数组中元素
		for(int i=0;i<s.length;i++){
			String s1 = s[i];
			System.out.println("数组s:"+s1);
		}
		//System.out.println(Arrays.toString(s));
		//将数组转成集合
		List<String> l = Arrays.asList(s);
		System.out.println("数组转成的集合:"+l);
		//输出:数组转成的集合:[aa, bb, cc]
		
		//集合中添加元素
		//l.add("dd");
		/*
		 * 报异常:java.lang.UnsupportedOperationException
		 * 说明:不能对转换后的集合进行添加操作
		 */
		
		//集合中删除元素
		//l.remove(0);
		/*
		 * 报异常:java.lang.UnsupportedOperationException
		 * 说明:不能对转换后的集合进行删除操作
		 */
		
		//修改元素
		l.set(0, "dd");
		System.out.println("修改后的集合:"+l);
		//输出:修改后的集合:[dd, bb, cc]
		System.out.println("修改后的数组:"+Arrays.toString(s));
		//输出:修改后的数组:[dd, bb, cc]
		/*
		 * 说明:对转换后的集合进行修改操作,会相应的对原数组进行改变
		 */
		
		/*
		 * 对转换后的集合进行增删操作:
		 * 将集合元素全部添加到一个新集合里,再对新集合进行相应的增删操作
		 */
		List<String> l1 = new ArrayList<String>();
		l1.addAll(l);
		System.out.println("新集合l1:"+l1);
		//输出:新集合l1:[dd, bb, cc]
		
		//进行增加操作
		l1.add("add");
		System.out.println("增加操作后的集合:"+l1);
		//输出:增加操作后的集合:[dd, bb, cc, add]
		//进行删除操作
		l1.remove("add");
		System.out.println("删除操作后的集合:"+l1);
		//输出:删除操作后的集合:[dd, bb, cc]
		
		
	}
	
}

(2)集合转数组

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

/*
 * 集合转成数组
 * 
 * Object[] toArray() 
 * 以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。  
 * 作用:将集合转成Object类型的数组,不常用
 * <T> T[] toArray(T[] a) 
 * 以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 
 * 返回的数组的运行时类型是指定数组的运行时类型。  
 * 作用:将集合转换成泛型规定的类型的数组,常用 
 */
public class Test1 {

	public static void main(String[] args) {
		//声明一个集合l
		Collection<String> l = new ArrayList<String>();
		//向集合中添加元素
		l.add("aa");
		l.add("bb");
		l.add("cc");
		//查看集合
		System.out.println(l);
		//输出:[aa, bb, cc]
		
		/*
		 * 将集合转成数组 
		 * Object[] toArray() 
		 */
		Object[] s = l.toArray();
		//查看数组
		System.out.println(Arrays.toString(s));
		//输出:[aa, bb, cc]
		
		/*
		 * 将集合转成数组
		 * <T> T[] toArray(T[] a) 
		 */
		String s1[] = l.toArray(new String[l.size()]);
		//查看数组
		System.out.println(Arrays.toString(s1));
		//输出:[aa, bb, cc]
	}
	
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值