---------------------- android培训、java培训、期待与您交流! ---------------------
JavaSE_19 笔记
Java语言基础之 LinkedHashMap Collections Arrays Map集合
1、
LinkedHashMap : 实现的是有序,即如何存进去就如何取出来。
TreeMap: 实现的是排序。
Acer_ yanfengfeng ;
2、事例:使用Map结合来操作字母次数
/**
* 记录字母次数的代码
* 打印结果: a(2) b(1) ...
* 思路:
* ①能存储映射关系的容器有 数组和Map集合。
* ②因为没有有序编号,所以使用Map集合来存储。
* ③因为要保证唯一性且有顺序,所以使用TreeMap集合。
*
* @param args
*/
public static void main(String[] args) {
String str="gggabcabcab ch";
String s=getCharCount(str);
System.out.println(s);
}
//指定容器得到 映射关系
private static String getCharCount(String str) {
char[] chs=str.toCharArray();
Map<Character,Integer> map=new TreeMap<Character,Integer>();
for(int i=0;i<chs.length;i++){
if(!(chs[i]>='a'&&chs[i]<='z'||chs[i]>='A'&&chs[i]>='Z')) //踢出空格
continue;
Integer value=map.get(chs[i]);
if(value==null){
map.put(chs[i], 1);
}else{
map.put(chs[i], value+1);
}
}
return mapToString(map);
}
//将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();
}
3、集合框架 之 Collections
① 排序 Collections.sort( list ); //对list集合进行指定顺序的排序。
② 交换 swap( list ,i ,j ) // 在集合列表指定位置交换元素。
4、集合框架 之 数组Arrays
① Arrays.asList(数组) ; 将数组转成集合。
好处:因为数组的长度是固定的,所以对于集合的增删方法时不可以使用的,否则会发生异常。
注意:如果数组的中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行存储。比如 Integer arr={11,22,33} ; 若果数组中的元素师基本类型数值,那么会将数组作为集合中的元素进行存储。
比如 int[] arr={ 11,22,33}; List list=Arrays.asList(arr); //此时存储的只有一个对象作为元素进行存储。
5、Collection之 将集合转为数组
①使用特点:集合转为数组可以对集合中的元素原本操作的方法进行限定,不允许对其进行增删。
② 注意到:如果长度小于集合的size,那么该方法就会创建一个同类型并和集合相同的size的数组。如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合中的元素,其它位置默认为Null。
②事例:
List<String> list= new ArrayList<String>();
String[] arr=list.toArray<>(new String[5]); //将集合中的元素存储到字符串数组中;
System.out.println(Arrays.toString( arr )); //将数组以集合形式打印输出。
6、JDK5.0新特性 之 ForEache循环
① 格式
for ( 类型 变量 : Collection 集合|数组 ) { // }
例如: for( String s : list ) { }
② 高级for注意点
Foreach只用于遍历;若要对元素进行操作则使用 Iterator ;
7、传统for和高级for的区别?
① 传统for可以完成对语句执行很多次,因为可以控制循环的增量和条件。
② 高级for是一种简化形式。它必须有被遍历的目标。该目标要么是数组,要么是collection单例集合。
③ 对数组的遍历如果仅仅是获取数组中的元素,可是使用高级for.
④ 如果要对数组的角标进行操作建议使用传统for.
8、使用高级for来操作Map集合两种方式:
//第一种:使用for遍历map键的集合
for(Integer key : map.keySet()){
String value=map.get(key);
System.out.print(key+"::"+value);
}
//第二种:使用for遍历整个map集合
for(Map.Entry<Integer, String> me:map.entrySet()){
Integer key=me.getKey();
String value=me.getValue();
System.out.print(key+"::"+value);
}
9、JDK5.0特性 之 函数可变参数
① 格式
Public static int newAdd ( int ... arr ) { } //
② 注意点
函数的可变参数其实就是一个数组,但是接收到是数组的元素,自动将这些元素封装成数组,从而简化了调用者的书写。同时,可变参数类型,必须定义在参数列表的结尾。
10、JDK5.0特性 之 静态导入
Import static java.util.Collections.sort // 静态导入,其实导入的是类中的静态成员;
Import staitc java.util.Collection.* // 导入全部静态成员;
2012/9/14 By Mary_K