Java第十九天学习笔记~

工具类里封装了一些实现小功能的方法,在实现需求的时候,不需要自己去写功能,直接调用即可。

工具类是Collections

排序

package cn.itcast.p2.toolclass.collections.demo;
//Collections  排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CollectionsDemo {
	public static void main(String[] args) {
	demo_1();
	}
	private static void demo_1() {
		// TODO Auto-generated method stub
		List<String> list=new ArrayList<String>();
		
		list.add("abcde");
		list.add("cba");
		list.add("aa");
		list.add("zzz");
		list.add("nbaa");
		System.out.println(list);

		//对list集合进行指定顺序的排序
		Collections.sort(list);
		System.out.println(list);
	}
	
	
}

折半

int index = Collections.binarySearch(  )

最值

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);
		System.out.println(list);
		
//		int index = Collections.binarySearch(list, "cba");		
//		System.out.println("index="+index);
		
		//获取最大值
		String max = Collections.max(list,new ComparatorByLength());
		System.out.println("max="+max);

逆序

TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new ComparatorByLength()));

替换

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");
//首先调用indexof查询“cba”的位置,然后把"nba"放到cba的位置
//		Collections.shuffle(list);
//		Collections.fill(list, "cc");
		System.out.println(list);
	}

将非同步集合转成同步集合的方法

List list = new ArrayList();//非同步的。
 
list = MyCollections.synList(list);//返回一个同步的list.
 
 
//给非同步的集合加锁。
 
class MyCollections{
 
	public static  List synList(List list){
		
		return new MyList(list);
	}
 
	private class MyList implements List{
	private List list;
	
	private static final Object lock = new Object();
	MyList(List list){	
		this.list = list;	
	}
	
	public boolean add(Object obj){
		synchronized(lock)
		{
			return list.add(obj);
		}
	}
	
	public boolean remove(Object obj){
		synchronized(lock)
		{
			return list.remove(obj);
		}
	}
 
}
}

Arrays方法

toArrays


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ToArray {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<String> list=new ArrayList<String>();
		
		list.add("abc1");
		list.add("abc2");
		list.add("abc3");
		/*
		 * toArray方法需要传入一个指定类型的数组
		 * 长度如何定义呢
		 * 如果长度小于集合的size,那么该方法会创建一个同类型并和集合相同size的数组
		 * 如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合中的元素,其他未知默认为null
		 * 所以建议,最后长度就指定为集合的size
		 */
		String[] arr=list.toArray(new String[2]);
		
		System.out.println(Arrays.toString(arr));
	}

}

asList

public static void demo_1() {
		/*
		 * 重点:List asList(数组)将数组转成集合。
		 * 
		 * 好处:其实可以使用集合的方法操作数组中的元素。
		 * 注意:数组的长度是固定的,所以对于集合的增删方法是不可以使用的
		 * 否则会发生UnsupportedOperationException
		 * 
		 * 
		 */
		String[] arr = {"abc","haha","xixi"};
		
//		boolean b = myContains(arr, "xixi");
//		System.out.println("contains:"+b);
		
		List<String> list = Arrays.asList(arr);
//		boolean b1 = list.contains("xixi");
//		System.out.println("list contaisn:="+b1);
//		list.add("hiahia");//UnsupportedOperationException
		
		System.out.println(list);
	}

foreach


import java.util.ArrayList;
import java.util.List;

public class ForEachDemo {
	public static void main(String[] args) {
		/*
		 * foreach语句:
		 * 格式:
		 * for(类型变量:Collection集合|数组)
		 * {
		 * 
		 * }
		 * 
		 * 传统for和高级for区别?
		 * 传统for可以完成对语句执行很多次,因为可以定义控制循环的增量和条件
		 * 
		 * 高级for是一种简化形式
		 * 他必须有被遍历的目标。该目标要是数组,要么是Collection单列集合
		 * 
		 * 对数组的遍历如果仅仅是获取数组中的元素可以使用高级FOR
		 * 如果要对数组的角标进行操作建议使用传统for
		 */
		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,3};
		
		for(int i:arr) {
			System.out.println(i);
		}
	}
}

用LinkedHashMap写一个集合

package cn.itcast.p1.map.demo;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
 
public class LinkedHashMapDemo {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		
		HashMap<Integer,String> hm = new LinkedHashMap<Integer,String>();
		
		hm.put(7, "zhouqi");
		hm.put(3, "zhangsan");
		hm.put(1, "qianyi");
		hm.put(5, "wangwu");
		
		Iterator<Map.Entry<Integer,String>> it = hm.entrySet().iterator();
		
		while(it.hasNext()){
			Map.Entry<Integer,String> me = it.next();
			
			Integer key = me.getKey();
			String value = me.getValue();
			
			System.out.println(key+":"+value);
		}
	}
 
}

有序链表输出

map集合

package cn.itcast.p1.map.demo;

import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class MapTest {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
 
		
		String str = "fdg+avAdc  bs5dDa9c-dfs";
		
		String s = getCharCount(str);
		
		System.out.println(s);
		
	}
 
	public static String getCharCount(String str) {
		
		
		//将字符串变成字符数组 
		char[] chs = str.toCharArray();
		
		//定义map集合表。
		Map<Character,Integer> map = new TreeMap<Character,Integer>();
		
		for (int i = 0; i < chs.length; i++) {
//避免输入空格、大写字母或者不属于26个字母以外的字符
			
			if(!(chs[i]>='a' && chs[i]<='z' || chs[i]>='A' && chs[i]<='Z'))
//			if(!(Character.toLowerCase(chs[i])>='a' && Character.toLowerCase(chs[i])<='z'))
				continue;
			
			//将数组中的字母作为键去查map表。			
			Integer value = map.get(chs[i]);
			
			int count = 1;
			
			//判断值是否为null.
			if(value!=null){
				count = value+1;
			}
//			count++;
			map.put(chs[i], count);
			/*
			if(value==null){
				map.put(chs[i], 1);
			}else{
				map.put(chs[i], value+1);
			}
			*/
		}
		
		
		
		
		
		return mapToString(map);
	}
 
	//将结果放入容器中,按指定形式结果输出。
	private static String mapToString(Map<Character, Integer> map) {
		
		StringBuilder sb = new StringBuilder();
		
		Iterator<Character> it = map.keySet().iterator();
		
		while(it.hasNext()){
			Character key = it.next();
			Integer value = map.get(key);
			
			sb.append(key+"("+value+")");
		}
		
		return sb.toString();
	}
 
}


猜你喜欢

转载自blog.csdn.net/crazyhulu/article/details/85011325