容器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
转载于:https://www.cnblogs.com/whgk/p/5326573.html
