集合框架工具类

一、collections工具类

 1、特点:

Collections:是集合框架的工具类,里面的方法都是静态的。

2,方法示例

1)排序(sort方法)

public class CollectionsDemo {
	public static void main(String[] args) {

		demo_2();
	}
	public static void demo_2(){
		List<String> list = new ArrayList<String>();
		
		list.add("abcde");
		list.add("cba");
		list.add("aa");
		list.add("zzz");
		list.add("cba");
		list.add("nbaa");
		System.out.println(list);
		Collections.sort(list);
		System.out.println(list);
		
	}
}

运行结果:

2)折半查找(binarySearch方法)

public class CollectionsDemo {
	public static void main(String[] args) {

		demo_2();
	}	
    public static void demo_2(){
	List<String> list = new ArrayList<String>();
		
	list.add("abcde");
	list.add("cba");
	list.add("aa");
	list.add("zzz");
	list.add("cba");
	list.add("nbaa");

	Collections.sort(list);
	int index = Collections.binarySearch(list, "cba");		
	System.out.println("index="+index);
    }
}

运行结果:

3)最大值(max方法)

public class CollectionsDemo {
	public static void main(String[] args) {

		demo_2();
	}	
    public static void demo_2(){
	List<String> list = new ArrayList<String>();
		
	list.add("abcde");
	list.add("cba");
	list.add("aa");
	list.add("zzz");
	list.add("cba");
	list.add("nbaa");
        String max = Collections.max(list);
		System.out.println("max="+max);
	}
}

运行结果:

4)倒序排序(reverseOrder方法)

public class CollectionsDemo {
	public static void main(String[] args) {
		
		demo_3();
	}
	
    public static void demo_3() {
		TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new ComparatorByLength()));	
		
		ts.add("abc");
		ts.add("hahaha");
		ts.add("zzz");
		ts.add("aa");
		ts.add("cba");
		
		System.out.println(ts);
		
	}

运行结果

5)替换元素(replaceAll方法)

public class CollectionsDemo {
	public static void main(String[] args) {
		demo_4();
	}
	
	public static void demo_4() {
		List<String> list = new ArrayList<String>();
		
		list.add("abcde");
		list.add("cba");
		list.add("zhangsan");
		list.add("zhaoliu");
		list.add("xiaoqiang");
		
		System.out.println(list);
		Collections.replaceAll(list, "cba", "nba"); // set(indexOf("cba"),"nba");
		System.out.println(list);
	}

运行结果:

6)将集合中的所有元素替换为同一元素(fill方法)

public class CollectionsDemo {
	public static void main(String[] args) {
		demo_4();
	}
	
	public static void demo_4() {
		List<String> list = new ArrayList<String>();
		
		list.add("abcde");
		list.add("cba");
		list.add("zhangsan");
		list.add("zhaoliu");
		list.add("xiaoqiang");
		
		System.out.println(list);
		Collections.fill(list, "cc");
		System.out.println(list);
	}

运行结果:

7)将集合的元素安排在随机的位置上(shuffle方法)

public class CollectionsDemo {
	public static void main(String[] args) {
		demo_4();
	}
	
	public static void demo_4() {
		List<String> list = new ArrayList<String>();
		
		list.add("abcde");
		list.add("cba");
		list.add("zhangsan");
		list.add("zhaoliu");
		list.add("xiaoqiang");
		
		System.out.println(list);
		Collections.shuffle(list);
		System.out.println(list);
	}

运行结果:

8)将集合变为同步

 

二、Arrays工具类

1、特点:

Arrays:是集合框架的工具类,里面的方法都是静态的。

2、方法示例

1)toString方法

public class ArraysDemo {
	public static void main(String[] args) {
		
		int[] arr = {3,1,5,6,3,6};		
		System.out.println(Arrays.toString(arr));
	}
}

运行结果:

toString方法的经典实现

public static String myToString(int[] a){
		int iMax = a.length - 1;
		if (iMax == -1)
	            return "[]";

        StringBuilder b = new StringBuilder();
        b.append('[');
        for (int i = 0;  ; i++) {//中间省略条件判断,提高了效率。
            b.append(a[i]);
	    if (i == iMax)
	    	return b.append(']').toString();
           b.append(", ");
        }
	}

2)将数组转成集合(asList方法)

好处:其实可以使用集合的方法操作数组中的元素。

public static void demo_1() {
	String[] arr = {"abc","haha","xixi"};
	List<String> list = Arrays.asList(arr);
	boolean b1 = list.contains("xixi");
	System.out.println("list contaisn:="+b1);
	System.out.println(list);
}

运行结果:

注意:1,数组的长度是固定的,所以对于集合的增删方法是不可以使用的否则会发生UnsupportedOperationException

           2,如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行集合存储,如果数组中的元素是基本类型数值,那么会将该数组作为集合中的元素进行存储

 

三、集合转数组(使用的就是Collection接口中的toArray方法)

1,代码示例:

public class ToArray {
	public static void main(String[] args) {
		
		List<String> list = new ArrayList<String>();
		list.add("abc1");
		list.add("abc2");
		list.add("abc3");
		String[] arr = list.toArray(new String[list.size()]);
		
		System.out.println(Arrays.toString(arr));
	}
}

运行结果:

2,特点

1,toArray方法需要传入一个指定类型的数组, 长度的定义:

如果长度小于集合的size,那么该方法会创建一个同类型并和集合相同size的数组,如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合中的元素,其他位置默认为null,所以建议,最后长度就指定为,集合的size。

 

四、JDK1.5新特性

1,Iterable接口

foreach语句:
         * 格式:
         * for(类型  变量   :Collection集合|数组)
         * {
         *         
         * }

1,代码示例:

List<String> list =new ArrayList<String>();
		
		list.add("abc1");
		list.add("abc2");
		list.add("abc3");
		
		for(String s : list){	//简化书写。		
			System.out.println(s);			
		}
		
		
		int[] arr = {3,1,5,7,4};
		
		for(int i : arr){
			System.out.println(i);
		}

2,传统for和高级for的区别?

传统for可以完成对语句执行很多次,因为可以定义控制循环的增量和条件,高级for是一种简化形式,它必须有被遍历的目标,该目标要是数组,要么是Collection单列集合,

对数数组的遍历如果仅仅是获取数组中的元素,可以使用高级for,如果要对数组的角标进行操作建议使用传统for。

3,foreach遍历map集合代码示例

Map<Integer,String> map = new HashMap<Integer,String>();
		
		map.put(3,"zhagsan");
		map.put(1,"wangyi");
		map.put(7,"wagnwu");
		map.put(4,"zhagsansan");

		for(Integer key : map.keySet()){
			String value = map.get(key);
			System.out.println(key+"::"+value);
		}
		
		for(Map.Entry<Integer,String> me : map.entrySet()){
			Integer key = me.getKey();
			String value = me.getValue();
			
			System.out.println(key+":"+value);
		}

 

2,函数的可变参数

1,特点

其实就是一个数组,但是接收的是数组的元素,自动将这些元素封装成数组。简化了调用者的书写。

注意:可变参数类型,必须定义在参数列表的结尾。

2,代码示例

public class ParamterDemo {
	public static void main(String[] args) {
		
		int sum = newAdd(5,1,4,7,3);
		System.out.println("sum="+sum);
		int sum1 = newAdd(5,1,2,7,3,9,8,7,6);
		System.out.println("sum1="+sum1);
		
	}

	public static int newAdd(int a,int...  arr){
		
		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			sum+=arr[i];
		}
                System.out.println("a="+a);
		return sum;
}

运行结果:

 

3,静态导入

import static java.util.Collections.*;//静态导入,其实到入的是类中的静态成员。

import static java.lang.System.*;

public class StaticImportDemo {

	public static void main(String[] args) {

		List<String> list = new ArrayList<String>();
		
		list.add("abc3");
		list.add("abc7");
		list.add("abc1");
		
		out.println(list);//静态导入后,不再需要通过类名进行调用
		
		sort(list);
		
		out.println(list);
		
		String max = max(list);
		System.out.println("max="+max);
		
	}

}

运行结果:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值