Java学习第17天:集合框架Collection的知识补充和其他类(还有增强for)
来源:互联网 发布:淘宝网曼天雨清仓服饰 编辑:程序博客网 时间:2024/06/08 05:47
Until17
1、Collectins-max
2、Collections-binarySearch
3、Collections-替换反转
4、Collections-reverseOrder
5、Collections-SynList
6、Arrays
7、集合转换成数组
8、增强for循环
9、可变参数
10、静态导入
先来个方法总结:
(1)排序 sort(); 排序方法都是用于操作List集合
如:Collections.sort(al);
Collections.sort(al,new MyComparator());//比较器传到这里!
(2)获取最大值(要先让其实现比较性)max
如:String max = Collections.max(al);
String max1 = Collections.max(al,new MyComparator());
(3)二分查找(必须是有序的)binarySearch();
如:Collections.sort(al,new StrLenComparator());
int index = Collections.binarySearch(al,"qq");//如果查找的值不存在,返回-(插入点角标)-1
int index = Collections.binarySearch(al,"qq",new MyCompatator()); //当要查找的元素对象不带比较性时,
可以传入自定义比较器
(4)将集合中的元素全部替换成指定元素 fill();
如:Collections.fill(al,"张三"); //将集合中元素全部替换成“张三”
(5)将集合所有某个名称元素替换成指定元素 replaceAll();
如:Collections.replaceAll(al,"qq","张三"); //将名称为qq的元素换成张三。
(6)将集合中的元素顺序反转 reverse();
如:Collections.reverse(al);
(7)将两个指定位置上的元素互换 swap();
如:Collections.swap(al,1,3);//互换集合al中的1、3位置上的元素
(8)将集合中元素按照随机顺序重新排序 shuffle()
如:Collections.shuffle(al);
(9)reverseOrder()方法返回一个比较器,比较顺序与元素自然顺序相反。
reverseOrder(Comparator() cmp),可以传入一个比较器,返回一个与传入比较器比较顺序相反的比较器。
(10)将线程不同步的集合转成线程同步的集合
synchronizedList(List<> l)
synchronizedMap(Map<> m)
synchronizedSet(Set<> s)
1、Collectins-max
package until_17; import java.util.*; public class Collections_Max { public static void main(String[] args) {// collections-sort\colletions-maxList<String> l = new ArrayList<String>();l.add("sss");l.add("s");l.add("zzzz");l.add("asdss");l.add("qwe");l.add("d");System.out.println(l);Collections.sort(l); //排序System.out.println(l);System.out.println(Collections.max(l,new ss()));//找最大值!可传入比较器} }class ss implements Comparator{public int compare(Object o1,Object o2){String s1 = (String)o1;String s2 = (String)o2;System.out.println(s1+"==="+s2);if(s1.length()>s2.length())return 1;if(s1.length()<s2.length())return -1;return 0;}}
2、Collections-binarySearch
使用binarySearch必须是有序集合!
package until_17; import java.util.ArrayList;import java.util.Collections;import java.util.List; public class Collection_binarySearch { public static void main(String[] args) {// TODO Auto-generated method stubList<String> l = new ArrayList<String>();l.add("sss");l.add("ssa");l.add("zzzz");l.add("asdss");l.add("qwe");l.add("d");System.out.println(l);int s = Collections.binarySearch(l,"zzzz");//提问!好像当字符串是单个的时候~返回的s值都是-1!比如"s"和"d"int ss = bs(l,"sas");System.out.println(s);System.out.println(ss);}//试着写这个方法public static int bs(List<String> list,String key){int max = list.size()-1;//System.out.println(max);int min = 0;int mid = 0;while(min<=max){mid = (max+min)>>1;//System.out.println(mid);int num = list.get(mid).compareTo(key);if(num<0)min = mid+1;else if(num>0)max = mid-1;elsereturn mid;}return -(mid)-1;} }
3、Collections-替换反转
package until_17; import java.util.ArrayList;import java.util.Collections;import java.util.List; public class Colletions_replace_reverse { public static void main(String[] args) {// 替换反转List<String> l = new ArrayList<String>();l.add("sss");l.add("ssa");l.add("zzzz");l.add("asdss");l.add("qwe");l.add("d");System.out.println(l);//替换Collections.fill(l, "a");System.out.println(l);//替换某一个值Collections.replaceAll(l,"a","b");//只要符合的a,全部都会替换成bSystem.out.println(l);//反转Collections.reverse(l);System.out.println(l);} }
4、Collections-reverseOrder
package until_17; import java.util.*; public class Collections_reverseOrder { public static void main(String[] args) {// reverseOrder() 倒序!括号里面可以放入比较器!这样比较器的值也会是倒序的//TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new strReverse()));ts.add("asdas");ts.add("aww");ts.add("asvxsss");ts.add("zzzs");System.out.println(ts);Iterator<String> it = ts.iterator();while(it.hasNext()){System.out.println(it.next());}} }class strReverse implements Comparator<String>{public int compare(String s1,String s2){return new Integer(s1.length()).compareTo(new Integer(s2.length()));}}
5、Collections-SynList
Collections.shuffle(Colletions c) //随机集合
Collections.sort()
6、Arrays
String[] array = {“a”,“a”,“a”,“a”,“a”,“a”};
Arrays.asList(array);//数组转换成集合
可以使用集合的思想来操作数组
但是不可以使用增删方法,因为数组的长度是固定的
contains
get
subList
indexOf
如果使用增删方法,会报出UnsupertedOperationException
如果数组中的元素是作为对象的存在,那么转换成集合之后是集合中的元素!
如果数组中的元素是作为元素的存在,那么转换集合之后,该数组作为集合的元素存在!
7、集合转换成数组
使用toArray(new String[0])方法!数组长度为0
指定类型的数组长度要定义多少呢?
当指定类型的数组长度小于定义的数组长度(size)的时候,会创建新的数组,长度为集合的size()
而当指定类型的数组长度大于定义的数组长度的时候,多出来的元素位置是Null,不会再创建数组
所以最好的是传入======集合.size();
为啥要集合变成数组
========为了限定元素的操作!
Arrays.toString()
8、增强for循环
for(int i : arry)
{
syso(i);
}
一下是1.5版本新特性!
9、可变参数
sort(int ... arr)
{
syso(arr.length)
}
10、静态导入
import static 导入包中的所有静态成员!
当类名重复时,需要指定具体的包名!
当方法名重复时,需要指定的所属对象或者类!
- Java学习第17天:集合框架Collection的知识补充和其他类(还有增强for)
- j2se学习要点记录(六)collection(集合)接口、增强的for循环、collections类
- java中级-5-Collection集合类知识串讲(4)-集合框架工具类Utilities
- Java学习日记(九)Collection、泛型、Map集合、Collections&Arrays、增强for语句、可变参数、静态导入
- 关于集合类框架学习的补充
- java语言基础(71)——集合框架(增强for的概述和使用)
- [集合]Java的集合框架 Collection集合
- 集合框架_增强for的概述和使用
- java的Collection集合框架
- 【Java】集合遍历增强for和普通for的区别
- 集合框架-增强for
- collection java集合类框架
- Java基础---集合(Collection接口、List接口及其子类、增强for)
- Java 编程思想(第4版)学习笔记(各种容器(集合框架)的比较 Collection Map ..第11章 练习4)
- Java 编程思想(第4版)学习笔记(各种容器(集合框架)的比较 Collection Map ..第11章 练习4)
- java 集合框架(Collection)和数组的排序
- java 集合框架(Collection)和数组的排序
- Java 集合框架(Collection)和数组的排序
- POJ 1273 Drainage Ditches
- Linux配置防火墙,开启80端口、3306端口
- JavaScript的事件代理
- 【杂谈】[SCOI2009]骰子的学问
- radiogroup的setOnCheckedChangeListener报错求助
- Java学习第17天:集合框架Collection的知识补充和其他类(还有增强for)
- UML之活动图
- FileItem类
- RAD Studio 2010/XE/XE2/XE3/XE4/XE5 官方 ISO 下载地址 (2013-12-12更新)
- 如何安全地存储密码
- 程序员人生之路(分析的非常透彻!)http://www.open-open.com/news/view/233f5f
- POJ 2112 Optimal Milking
- Linpack计算力集群测试
- Dynamic Programming: From novice to advanced