------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
< 今日心情 >放掉懒惰,再加上一份坚持
一、Map
1.特点
Map在集合框架中与Collection属于并列存在Map存储的是键值对,键要保证唯一性2.Map方法
添加:put(K key, V value)putAll(Map<? extends K,? extends V>)删除:clear()remove(Object key)判断:containsKey(Object key)containsValue(Object value)isEmpty()获取:get(Object key)size()values()
entrySet()keyset()3.HashTable
底层是哈希表数据结构,不可以存入null键null值,集合线程同步,由于效率低已经被HashMap替代4.HashMap
底层是哈希表数据结构,可以存入null键null值,该集合线程不同步hashCode和equals保证键的唯一性import java.util.*; class Student { private String name; private int age; public Student(String name,int age) { this.name=name; this.age=age; } public String getName() { return name; } public int getAge() { return age; } public int hashCode() { return name.hashCode()+age*19; } public boolean equals(Object o) { Student s; if(!(o instanceof Student)) { return false; } s=(Student)o; if(this.getName()==s.getName()) { return new Integer(this.getAge()).equals(new Integer(s.getAge())); } return this.getName().equals(s.getName()); } } class HashMapDemo { public static void main(String[] args) { HashMap hm=new HashMap (); hm.put(new Student("zhang01",11),"初中"); hm.put(new Student("zhang02",15),"初中"); hm.put(new Student("zhang03",25),"初中"); hm.put(new Student("zhang04",5),"初中"); hm.put(new Student("zhang05",35),"初中"); hm.put(new Student("zhang03",25),"高中"); /* Set > meSet=hm.entrySet(); //通过entrySet方法返回Set集合 Iterator > i=meSet.iterator();//接下来就是在Set的操作方法 while(i.hasNext()) { Map.Entry me=i.next(); System.out.println(me.getKey().getName()+":"+me.getKey().getAge()); System.out.println("我在上:"+me.getValue()); } */ //简化书写 for(Map.Entry me : hm.entrySet()) { System.out.println(me.getKey().getName()+":"+me.getKey().getAge()); System.out.println("我在上:"+me.getValue()+"\n"); } } }
![]()
5.TreeMap
底层是二叉树数据结构,可以对集合进行排序用比较器来排序并保证键的唯一性import java.util.*; class Student { private String name; private int age; public Student(String name,int age) { this.name=name; this.age=age; } public String getName() { return name; } public int getAge() { return age; } } class StuComp implements Comparator { public int compare(Student s1,Student s2) { if(s1.getName()==s2.getName()) { return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); } return s1.getName().compareTo(s2.getName()); } } class TreeMapDemo { public static void main(String[] args) { TreeMap tm=new TreeMap (new StuComp()); tm.put(new Student("zhang01",11),"初中"); tm.put(new Student("zhang02",15),"初中"); tm.put(new Student("zhang03",25),"初中"); tm.put(new Student("zhang03",15),"初中"); tm.put(new Student("zhang05",35),"初中"); tm.put(new Student("zhang03",25),"高中"); /* Set keySet=tm.keySet();//获取键的集合 Iterator i=keySet.iterator(); while(i.hasNext()) { Student s=i.next(); System.out.println(s.getName()+":"+s.getAge()); System.out.println("我在上:"+tm.get(s)+"\n");//通过键获取值 } */ //简化代码 for(Student s : tm.keySet()) { System.out.println(s.getName()+":"+s.getAge()); System.out.println("我在上:"+tm.get(s)+"\n"); } } }
![]()
二、 工具类
1.Collections
操作集合的工具类,类中的方法都是静态方法import java.util.*; class Student { private String name; private int age; public Student(String name,int age) { this.name=name; this.age=age; } public String getName() { return name; } public int getAge() { return age; } } class StuComp implements Comparator { public int compare(Student s1,Student s2) { if(s1.getName()==s2.getName()) { return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); } return s1.getName().compareTo(s2.getName()); } } class CollectionsDemo { public static void main(String[] args) { TreeMap tm=new TreeMap (Collections.reverseOrder(new StuComp())); //Collections.reverseOrder(new StuComp()),返回的是一个比较器,它逆转了原比较器的顺序 /* Map cm=Collections.checkedMap(tm);//将tm转换成线程安全的集合 // 获得最大值最小值 //使用二分查找方法查找指定的List集合中的元素 */ tm.put(new Student("zhang01",11),"初中"); tm.put(new Student("zhang02",15),"初中"); tm.put(new Student("zhang03",25),"初中"); tm.put(new Student("zhang03",15),"初中"); tm.put(new Student("zhang05",35),"初中"); tm.put(new Student("zhang03",25),"高中"); for(Student s : tm.keySet()) { System.out.println(s.getName()+":"+s.getAge()); System.out.println("我在上:"+tm.get(s)+"\n"); } } }
![]()
2.Arrays
操作数组的工具类import java.util.*; class ArraysDemo { public static void main(String[] args) { Integer[] num={1,2,32,21,14,8}; List l=Arrays.asList(num); //返回一个长度固定的List集合 //返回的集合长度固定,List中增删方法失效 /* 通过集合的toArray()方法可以获得数组 Integer[] newNum=l.toArray(new Integer[l.size()]); */ /* asList 返回固定长度的List集合 binarySearch 折半查找 copyOf 复制数组数据 equals 判断数组相等 fill 填充数据 hashCode 基于数组内容返回哈希值 sort 排序 toString 数组转成字符串 */ } }
三、新增for语句
格式
for(数据类型 变量名 : 数组或集合)
{
执行语句;
}作用:遍历获得集合中的元素
限制:只能对集合遍历,不能操作集合
四、函数的Param参数
格式
返回值类型 函数名(数据类型 …… 形式参数){执行语句;}其实就是数组的另一种形式
class ParamFunctionDemo { public static void main(String[] args) { fun("num1",1,2,3,4); fun("num2",2,6,3,7,8,0,9); } public static void fun(String name,int...param)//注意int...只能写在形参的末尾,且只能有一个 { System.out.print(name+":"); for(int i : param) { System.out.print(i); } System.out.println(); } }
![]()