Java_Collections类

Collections:
集合工具类,提供了很多操作集合数据的方法

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * Collections的用法,两种
 * 1、使用Comparator  规则自定义(比如根据长度)
 * 2、使用默认   比较大小(默认升序)
 * 3、binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
 *    使用二分搜索法搜索指定列表,以获得指定对象。(必须先排序)
 * 4、reverse(List<?> list) 
          反转指定列表中元素的顺序
   5、sort(List<T> list) 
          根据元素的自然顺序 对指定列表按升序进行排序。
 sort(List<T> list, Comparator<? super T> c) 
          根据指定比较器产生的顺序对指定列表进行排序
   6、swap(List<?> list, int i, int j) 
          在指定列表的指定位置处交换元素。
   7、 shuffle(List<?> list) 
          使用默认随机源对指定列表进行置换。//洗牌
 * @author 30869
 *
 */
public class Collections_Test {




public static void main(String[] args) {
// List<String> list = new ArrayList<String>();
// list.add("a");
// list.add("ab");
// list.add("abcd");
// list.add("abc");
// list.add("abcde");
// list.add("b");
// list.add("e");
// Collections.sort(list);//默认比较大小升序排序
// System.out.println(list);
// 
// list = new ArrayList<String>();
// list.add("a");
// list.add("ab");
// list.add("abcd");
// list.add("abc");
// list.add("abcde");
// list.add("b");
// list.add("e");
// Collections.sort(list,new StringComparator());//按照StringComparator类的规则排序,降序只需改变返回值正负即可
// System.out.println(list);
// Collections.reverse(list);//反转元素
// System.out.println(list);
// Collections.swap(list, 0, 1);//交换指定列表指定两个位置的元素
// System.out.println(list);
// Collections.shuffle(list);//打乱指定列表的顺序
// System.out.println(list);
List<Integer> list=new ArrayList<Integer>();//模拟斗地主洗牌发牌
for(int i=1;i<=54;i++){//往容器中放入数字54个
list.add(i);
}
Collections.shuffle(list);//洗牌
List<Integer> p1=new ArrayList<Integer>();//三个人和底牌
List<Integer> p2=new ArrayList<Integer>();
List<Integer> p3=new ArrayList<Integer>();
List<Integer> last=new ArrayList<Integer>();
for(int i=1;i<=51;i+=3){//发牌.留3张底牌
p1.add(list.get(i));
p2.add(list.get(i+1));
p3.add(list.get(i+2));
}
last.add(list.get(51));
last.add(list.get(52));
last.add(list.get(53));
System.out.println("第一个人的牌:");
System.out.println(p1);
System.out.println("第二个人的牌:");
System.out.println(p2);
System.out.println("第三个人的牌:");
System.out.println(p3);
System.out.println("底牌:");
System.out.println(last);
}

}

同步控制(转换为线程安全):

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

/**
 * 利用Collections类提供的方法管理集合----》同步,因为有些常用集合线程不安全
 * 
	List synchronizedList(List<T> list) 
	Map synchronizedMap(Map<K,V> m) 
	Set synchronizedSet(Set<T> s)
 * @author 30869
 *
 */
public class SynchronizedCollection {

	public static void main(String[] args) {
		List<String> list=new ArrayList<String>();
		list.add("5");
		list.add("6");
		List<String> list2=Collections.synchronizedList(list);//返回一个同步,线程安全的List
		System.out.println(list2.size());
	}

}


只读设置:

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 集合的只读设置
 * 1、一个元素,不可变:
	 * singleton(T o)
	 * singletonMap(K key, V value)
	 * singletonList(T o)
   2、返回一个空的集合(避免外部访问出现空指针异常)
	   emptySet()
	   emptyMap()
	   emptyList() 
   3、不可变容器
	   unmodifiableSet(Set<? extends T> s)
	   unmodifiableMap(Map<? extends K,? extends V> m)
	   unmodifiableList(List<? extends T> list)
	如果强行改变数据,会抛不支持的操作异常
 * @author 30869
 *
 */
public class OnlyReadCollection {

	public static void main(String[] args) {
		Map<String,String> map=Collections.singletonMap("a", "abc");//只能有一个元素,并且不可变
	//	map.put("b", "def");//UnsupportedOperationException异常
		List<String> list=new ArrayList<String>();
		list.add("kjjj");
		list.add("456");
		List<String> list2=Collections.unmodifiableList(list);
		//list2.add("fdfd");//UnsupportedOperationException
		}
	public Set<String> TestEmptySet(Set<String> set){
		if(null==set){
			return Collections.EMPTY_SET;//避免外界访问产生的空指针异常
		}
		//中间是对参数的操作代码
		
		return set;
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值