List,Set接口

import java.util.ArrayList;
import java.util.List;

/*Collection集合有两个子接口

* 1,,List接口 :有序,可包含重复元素

* List集合有两个特有方法 1,ListIterator listIterator()可以用迭代器来调用add方法添加元素 。2,Object get(index)取元素的特有方法,其他集合只能使用迭代器去元素
  • ListIterator 比 Iterator迭代器要多出很多方法!!!!!!!
  • 1.1 ListArray集合 特点 :内部以数组的结构 存储元素,适合用来查询元素,所以查找元素的时候用这个集合
  • 1.2 LinkedList集合 特点: 内部以链表的结构来存储元素 适合增删元素 ,增删元素的时候用此集合

* 2, Set接口 : 不包含重复元素 ,他的方法与Collction的方法基本一样,所以他取元素的方法只有一个,那就是Iterator迭代器

  • 2.1 HashSet集合,无序, 内部存储结构是哈希表,其实也是把元素存在类似数组的集合里。

  • 该集合查找速度非常快,因为每存储的元素,都要调用自动自己的hashCode()方法,计算出自己的哈希值,通过对自己的哈希值操作,得到存储的位子。

  • 如果存的元素的哈希值相同,就会调用equals()方法比较两个元素的内容是否 完全 相同,如果不同,就会存储,也会存储在与哈希值相同的元素的地方。

  • 因为不能存储相同一模一样的元素,所以当我们存储元素的时候,最好写上自己的hashCode()方法和equals()方法

  • 如果没有重写,继承的是Object的方法,那么也能存储相同的元素,这是不应该发生的,因为HashSet不存储相同的元素。

  •  2.1.1 HashSet有一个可以有序输出的子类,是LinkedHashSet
    
  •  LinkendHashSet内部的存储结构是哈希表和链表,存进去的什么顺序,取出来的就是什么顺序
    
  • 2.2 TreeSet类

  • List集合的特有方法:

  • 增加:

  • void add(index,obj)在指定位子增加元素

  • void addAll(index,coll)指定位子插入集合

  • 删除:

  • Object remove(index)删除指定位子的元素 注意!!!!返回的是被删除的元素!!!!!!!!!!!!!!!

  • 修改:

  • Object set(index,obj)修改指定位子的元素 注意!!!!!返回的是被修改的元素!!!!!!!!!

  • 获取:比较重要。也是只有List集合才有的方法,其他集合去元素只能使用Iterator()方法!!!

  • Object get(index)获取指定位子的元素!!

  • int indexOf(obj)获取元素的位子

  • int lastIndexOf(obj)

  • */
    public class ListDemo {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    /*容易出错的地方:
    * List list = new ArrayList();
    * list.add(“abc1”);
    * list.add(“abc2”);
    * list.add(“abc3”);
    * Iterator it = list.iterator();此时迭代器已经读取了元素
    * while(it.hasNext()){
    * Object obj = it.next();
    * if(obj.equals(“abc2”))
    * { list.add(“abc9”);}而这里又添加元素,此时的迭代器并不知道,所以会报错
    * syso(obj);
    * }
    * syso(list);
    * 没有答案,会报错,因为集合和迭代器同时在操作元素
    *
    * 那么如何更改才可以实现呢添加元素呢?既然不能同时操作,那就让其中一个操作 ,,,这里就要用到List集合 特有 的 迭代器 : ListIterator listIterator();该迭代器是List集合特有
    * ListIterator it = list.listIterator();这里修改 , 用这个迭代器
    * it.add(“abc9”);
    * 以上是修改的两处!!!
    * 这样就不会报错了!!!
    * 答案是:[abc1,abc2,abc9,abc3]
    * */

    }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值