黑马程序员 集合

来源:互联网 发布:炫酷个人网站源码下载 编辑:程序博客网 时间:2024/05/08 19:42


------- android培训、java培训、期待与您交流! ----------


集合中存放的都是对象的地址


一、集合Collection共性操作 add() remove()

    迭代器

for(Iterator it=Collection.iterator;it.hasNext:){

      it.next();

}

二、List集合  有序的

通过角标操作

List集合迭代器 ListIterator  不可以通过集合对象的方法来操作集合中元素,通过迭代器来操作元素

遍历

for(ListIterator li=集合.listIterator;li.hasNext();){

  Object obj=li.next();

  li操作()

}

List
    |-ArrayList 数组结构  查询快 增删慢
    |-LinkedList 链表结构 增删快 查询慢
    |-Vector  数组结构 线程同步


LinkedList模拟队列

package com.heima.demo;import java.util.LinkedList;public class LinkDemo {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubDuiLi dui = new DuiLi();dui.myadd("q");dui.myadd("w");dui.myadd("e");while(!dui.ismyEmtry()){System.out.println(dui.myget());}}}class DuiLi {private LinkedList li;DuiLi() {li = new LinkedList();}public void myadd(Object obj) {li.add(obj);}public Object myget() {return li.removeLast();}public boolean ismyEmtry() {return li.isEmpty();}}


如果ArrayList装的是自定义对象,判断对象是否相同要重写Object的equals方法;


三 set  无序的,元素不可以重复

  HashSet  存放需要比较两次  1.HashCode值 2.对象是否一样

HashSet查询 删除等操作先依赖的是HashCode 再依赖equals

细说HashCode方法与equals方法的区别

1、如果两个对象相同,那么它们的hashCode值一定要相同;

2、如果两个对象的hashCode相同,它们并不一定相同 上面说的对象相同指的是用eqauls方法比较。

HashSet会先使用hashCode方法来比较,如果hashCode值相同那就再使用equals方法来比较

equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等。举个例子,有个学生类,属性只有姓名和性别,那么我们可以认为只要姓名和性别相等,那么就说这2个对象是相等的。hashcode方法一般用户不会去调用

hashcode返回值是int equals返回值是boolean


TreeSet

1.可以自动排序 调用底层的compareTo方法

compareTo返回值是int,负整数、零或正整数,根据此对象是小于、等于还是大于指定对象

2.比较器
定义一个类实现Comparetor接口,覆盖Compare方法,返回值为int
当两种方式都存在时以比较器为准

当主要条件排序完成后要考虑次要条件排序

构造器Demo

class lencomrator implements Comparator{public int compare(Object o1, Object o2) {String s1=(String)o1;String s2=(String)o2;int num=new Integer(s1.length()).compareTo(new Integer(s2.length()));if(num==0)return s1.compareTo(s2);return num;}}