??? 容器 Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式 ?? ?·Set中的数据对象没有顺序且不可以重复?? ?HashSet ?? ?·List中的数据对象有顺序且可以重复?? ??? ?LinkedList(底层为链表)? ArrayList(底层为数组) ?? ??? ? ·Array读快改慢 ·Linked改快读慢 ·Hash两者之间
Map接口定义了存储“键(key) - 值(value)映射对”的方法?? ?HashMap
①Collection接口中所定义的方法 ?? ?int size() ?? ?boolean isEmpty() ?? ?void clear() ?? ?boolean contains(object element)?? ?//是否包含了element元素 ?? ?boolean add(object element) ?? ?boolean remove(object element) ?? ?Iterator iterator(); ?? ?boolean containsAll(Collection c)?? ?//是否包含了集合c里面的所有元素 ?? ?boolean addAll(Collection c)?? ??? ? ?? ?boolean removeAll(Collection c)?? ??? ?//移除有集合c里面的所有元素 ?? ?boolean retainAll(Collection c)?? ??? ?//跟另一个集合的交集 ?? ?Object[] toArray()
②Iterator接口?? ??? ?为了统一遍历Collection中方法, ?? ?·所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象 ?? ?·Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作 ?? ?·Iterator接口定义了如下方法 ?? ??? ?·boolean hasNext()?? ?//判断游标右边是否有元素 ?? ??? ?·object next()?? ??? ?//返回游标右边的元素并将游标移动到下一个位置 ?? ??? ?·void remove()?? ??? ?//删除游标左面的元素,在执行完next之后该操作只执行一次 补充:增强的for循环 ? ?? ?缺陷: ?? ??? ?·数组:不能方便的访问下标值 ?? ??? ?·集合:与使用iterator相比,不能方便的删除集合中的内容 ?? ?总结:除了简单遍历并读出其中的内容 ?? ?int[] arr = {1,2,3,4,5}; ?? ?for(int i : arr){ ?? ??? ?System.out.println(i); ?? ?}
?? ?Collection c = new ArrayList(); ?? ?c.add(); ?? ?c.add(); ?? ?c.add(); ?? ?for(Object o : c){ ?? ??? ?System.out.println(o); ?? ?}
③Set接口 ?? ?·Collection的子接口,Set接口没有提供额外的方法,但实现Set接口的容器类中的元素是没有顺序的,而且不可以重复 ?? ?·Set容器可以与数学中“集合”的概念相对应 ?? ?·J2sDK API中所提供的Set容器类有HashSet,TreeSet等
④List接口 ?? ?·List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,能重复的 ?? ?·List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素 ?? ?·J2SDK 所提供的List容器类有ArrayList,LinkedList等。 ?? ??? ?List容器常用算法 ?? ??? ??? ?·void sort(List) 对List容器内的元素排序 ?? ??? ??? ?·void shuffle(List) 对List容器内的对象进行随机排序 ?? ??? ??? ?·void reverse(List) 对List容器内的对象进行逆序排列 ?? ??? ??? ?·void fil(List, object) 用一个特定的对象重写整个List容器 ?? ??? ??? ?·coid copy(List dest, List src) 将src List容器内容拷贝到dest List容器 ?? ??? ??? ?·int binarySearch(List,object) 对于顺序的List容器,采用折半查找的方法查找特定对象
⑤comparable接口 ?? ?·所有可以“排序”的类都实现了此方法, ?? ?·只有一个方法public int compareTo(object obj); ?? ??? ?返回0 表示 this == obj ?? ??? ?返回正数 表示 this > obj ?? ??? ?返回负数 表示 this < obj
⑥Map接口?? ? ?? ?·实现Map接口的类用来存储键 -值 对 ?? ?·Map接口的实现类有HashMap 和 TreeMap 等 ?? ?·Map类中存储的键 - 值对通过键来标识,所以键值不能重复 ?? ??? ?Object put(Object key,Object value) ?? ??? ?Object get(Object key) ?? ??? ?Object remove(Object key) ?? ??? ?boolean containsKey(Object key) ?? ??? ?boolean containsValue(Object value) ?? ??? ?int size() ?? ??? ?boolean isEmpty() ?? ??? ?void putAll(Map t) ?? ??? ?void clear()
自动打包 Auto-Boxing/unBoxing ?? ?·在核实的时机自动打包、解包 ?? ?·自动将对象转换为基础类型
泛型Generic 起因: ?? ?·JDK1.4以前类型不明确: ?? ??? ?·装入集合的类型都被当作Object对待,从而失去自己的实际类型 ?? ??? ?·从集合中取出时往往需要转型,效率低,容易产生错误 解决办法 ?? ?·在定义集合的时候同时定义集合中对象的类型 ?? ?·实例: ?? ??? ?·可以再定义Collection的时候指定 ?? ??? ?·也可以在循环时用Iterator指定 ?? ?List<String> c = arrayList<String>(); ?? ?Iterator<String> it = c2.iterator(); ?? ? ?? ? 好处 ?? ?·增强程序的可读性和稳定性
补充:Object是所有类的父类,其中的一些方法 ?? ?toString()方法 ?? ?·public String toString() 描述当前对象的有关信息 ?? ?·在进行String与其它类型数据的连接操作时,(如:System.out.println("info" + person))将自动调用该对象类的toString()方法 ?? ?·可以根据需要在用户自定义类型中重写toString()方法
?? ?hashCode()方法 ?? ?哈希码
?? ?equals()方法 相当于“==” 所以大多数类中重写了equals()方法 ?? ?public boolean equals(Object obj)
?? ?比较对象是否相等,重写 ?? ?public boolean equals(Object obj){ ?? ??? ?if(obj == null) return false; ?? ??? ?else{ ?? ??? ??? ?if(obj instanceof class){??? //class类,判断obj是否属于class类 ?? ??? ??? ??? ?Class c = (class)obj; ?? ??? ??? ??? ?if(c.color == this.color && ...){?? //所有属性都相同 ?? ??? ??? ??? ??? ?return true; ?? ??? ??? ??? ?} ?? ??? ??? ?}
?? ??? ?} ?? ?}
总结:1136 ?? ?·一个图 ?? ??? ?Collection?? ??? ??? ??? ?Map ?? ??? ?/?? ??? ??? ??? ??? ? | ?? ????? set?? ?list?? ??? ??? ?????? hashMap ?? ????? /?? ??? ?/?? ?? ??? hashSet arrayList? linkedList?? ??? ??? ? ?? ?·一个类 ?? ??? ?·Collections ?? ?·三个知识点 ?? ??? ?·for ?? ??? ?·Generic(泛型) ?? ??? ?·Auto-Boxing/unBoxing ?? ?·六个接口 ?? ??? ?·colleciton ?? ??? ?·set ?? ??? ?·list ?? ??? ?·map ?? ??? ?·Iterator ?? ??? ?·comparable
(编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|