Collection单列集合 - - 知识点.

                    **Collectoin单列集合:**

Collection方法:
● boolean add(Object e) 把给定的对象添加到当前集合中
● void clear() 清空集合中所有的元素
● boolean remove(Object o) 把给定的对象在当前集合中删除
● boolean contains(Object o) 判断当前集合中是否包含给定的对象
● boolean isEmpty() 判断当前集合是否为空
● Iterator iterator() 迭代器,用来遍历集合中的元素的
● int size() 返回集合中元素的个数
● Object[] toArray() 把集合中的元素,存储到数组中
● Iterator : 迭代器
● Object next()返回迭代的下一个元素
● boolean hasNext()如果仍有元素可以迭代,则返回 true。


**List集合:**
1.特点:
      ①它是一个有序的集合(元素存与取顺序相同)
      ②它可以存储重复的元素
      ③有索引

2.List集合中的特有方法
void add(int index, Object element) 将指定的元素,添加到指定位置上
Object get(int index)返回集合中指定位置的元素。
Object remove(int index) 移除列表中指定位置的元素, 返回的是被移除的元素
Object set(int index, Object element)用指定元素替换集合中指定位置的元素

3.List的子类
①ArrayList:
        底层数据结构是数组,查询快,增删慢
        线程不安全,效率高
②LinkedList:
        底层数据结构是链表,查询慢,增删快
        线程不安全,效率高
**Set集合**
1.特点:
      ①它不能存储重复的元素
      ②没有索引
      ③HashsSet无序的集合(元素存与取的顺序可能不同)
       LinkedHashsSet有序的集合(元素存与取的顺序相同)
2.Set子类
①HashSet:
         元素唯一不能重复
         底层结构是 哈希表结构
         元素的存与取的顺序不能保证一致
②LinkedHashSet:
         元素唯一不能重复
         底层结构是 哈希表结构 + 链表结构
         元素的存与取的顺序一致

3.Set集合存储元素不重复的原理:
    hashCode值一样 , 元素内容不一样 , 还是会输出 .
    hashCode值一样 , 元素内容一样 , 不会输出 .
    存储的元素必须重写hashCode和equals方法,来保证元素唯一
    String,Integer,Double...hashCode和equals方法

没有索引的遍历方式:
1.迭代器遍历:
ArrayList<String> list = new ArrayList<>(); //创建集合
Iterator<String> it = list.iterator();  //获取迭代器对象.
while(it.hasNext()){  // 判断是否仍有元素可以迭代
     String str = it.next();  // 取出下一代元素.
     System.out.println(str);
}
2.增强for循环
格式:创建一个数组或者集合.
     for(数据类型 变量 : 数组 / Collection集合) {
          // 输出变量.
     }

hashCode和equals方法的两个问题:
两个对象 Person p1 = new Person(); p2= new Person();
问题1:
如果两个对象的哈希值相同 p1.hashCode() == p2.hashCode()
两个对象的equals一定会返回true吗? p1.equals(p2)一定是true吗
正确答案:不一定
问题2:如果两个对象的equals方法返回true, p1.equals(p2)=true
两个对象的哈希值一定相同吗?
正确答案:一定(常规协定) 该协定声明相等对象必须具有相等的哈希码。

注意:
迭代器和增强for只能遍历,不能删除或者修改元素.否则就会出现并发修改异常:ConcurrentModificationException .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值