博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习日志(17-2-集合框架工具类Arrays及其他特性)
阅读量:6317 次
发布时间:2019-06-22

本文共 3123 字,大约阅读时间需要 10 分钟。

  hot3.png

Arrays:用于操作数组的工具类,里面都是静态方法

/* Arrays:用于操作数组的工具类,里面都是静态方法 asList:将数组转为list集合 */import java.util.*;class ArraysDemo{	public static void main(String[] args){		/* int[] arr={2,4,5};		System.out.println(Arrays.toString(arr)); */				String[] arr={"abc","cc","kkkk"};		/*把数组变成List集合			可以使用集合的思想和方法来操作数组中的元素		  **将数组变成集合,不成使用集合的增删方法,因为长度固定		  可以使用:			contains	get		indexOf()	subList()		*/		List
list=Arrays.asList(arr); System.out.println(list.contains("cc")); // list.add("qq"); System.out.println(list); /* int[] nums={2,4,5}; List
li=Arrays.asList(nums); 如果数组中的元素都是对象,变成集合时,数组中的元素就直接转成元素 如果数组中的元素都是基本数据类型,会将该数组作为集合中的元素存在 */ }}

    集合变数组

        Collection中toArray()

import java.util.*;class CollectionToArray{	public static void main(String[] args){		ArrayList
al=new ArrayList
(); al.add("abc1"); al.add("abc2"); al.add("abc3"); String[] arr=al.toArray(new String[al.size()]); //将al转为数组 /* 1.指定类型的数组长度小于集合的size,该方法内部会创建一个长度合适的新数组 2.当指定类型的数组长度>集合的size,会用null填充 因此长度为al.size() */ System.out.println(Arrays.toString(arr)); }}

        为什么需要将集合变为数组?

        ——为了限定对元素的操作,不需要进行增删

    增强for循环

        高级for循环

for(数据类型 变量名:被遍历集合(Collection)/数组){}//运行时变量名依次指向集合中的每一个元素,然后取出

        对集合进行遍历时,只能获取元素,但不能对集合进行操作

        迭代器不但可以遍历,还可以remove(),

        如果是ListIterator,还可以在遍历时进行增删改查

import java.util.*;class ForEachDemo{	public static void main(String[] args){		ArrayList
al=new ArrayList
(); al.add("abc1"); al.add("abc2"); al.add("abc3"); for(String s:al){ //增强for循环,简化迭代器书写 System.out.println(s); } int[] arr1={2,3,5}; for(int s1:arr1){ System.out.println("arr1:"+s1); } HashMap
hm=new HashMap
(); hm.put(1,"a"); hm.put(2,"b"); hm.put(3,"c"); Set
keySet=hm.keySet(); for(Integer i:keySet){ System.out.println(i+"::"+hm.get(i)); } for(Map.Entry
me:hm.entrySet()){ System.out.println(me.getKey()+"___"+me.getValue()); } /* Iterator
it=al.iterator(); while(it.hasNext()){ System.out.println(it.next()); } */ }}

    传统for和高级for的区别

        高级for必须有被遍历的目标

        在遍历数组时,建议使用传统for,可定义角标,操作性更高

    可变参数

        JDK5.0出现的新特性

import java.util.*;class ParamMethodDemo{	public static void main(String[] args){		/* int[] arr=(3,4);		show(arr);		int[] arr(3,4,5);		show(arr1); */		//虽然少定义了多个方法,但每次都要重新创建数组		show(2);		show(2,3,4,5,6);	}	/*	可变参数	其实就是上一中数组参数的简写形式	不再手动建立对象,只要传递参数即可	隐式地将这些参数封装成数组	*/	public static void show(int...arr){	//...即可变参数		System.out.println(arr.length);	}	/* public static void show(int[] arr){			} */	/* 	public static void show(int a,int b){		System.out.println(a+"'"+b);	} */}

        方法的可变参数在使用时注意:

            可变参数一定要定义在参数列表的最后

show(String str,int...arr){}

    静态导入

import java.util.*;import static java.util.Arrays.*;//导入Arrays下的所有静态成员import static java.lang.System.*;//导入System下静态成员class StaticImport{	public static void main(String[] args){		int[] arr={3,1,5};		sort(arr);//独有方法可省略Arrays		//默认先继承Object类,适用的是Object包中的方法,因此不可省略		int index=Arrays.binarySearch(arr,1);		/* System. */out.println(Arrays.toString(arr));		System.out.println(index);	}}

        当类名重名时,需要指定具体的包

        当方法重名时,指定具备所属的对象或类

转载于:https://my.oschina.net/Almon/blog/742131

你可能感兴趣的文章
“经常加班”有误区
查看>>
jquery各种事件触发实例
查看>>
我的友情链接
查看>>
MY TroubleShooting
查看>>
鸟哥学习笔记---DNS
查看>>
Linux 常用目录管理命令(cd pwd mkdir rmdir)
查看>>
java程序员菜鸟进阶(四)oracle基础详解(四)oracle开启和关闭服务程序——解决安装oracle占用大量内存...
查看>>
Flask_学习笔记_09: Flask中的继承
查看>>
Mahout源码目录说明
查看>>
我的友情链接
查看>>
Java学习日志(17-2-集合框架工具类Arrays及其他特性)
查看>>
HTTP响应头和请求头信息对照表
查看>>
Chrome完美屏蔽优酷广告及黑屏教程
查看>>
一份不错的php面试题(附答案)
查看>>
前端工程资源发布、优化
查看>>
nginx安装(ubuntu14.04)
查看>>
SQLServer2008备份和恢复
查看>>
WinCE 6.0 的编译
查看>>
访问Nginx上的资源时出现403的原因及解决办法
查看>>
大家好,我是蔡某某,刚刚注册的账号,希望大家支持与帮助
查看>>