List集合和Set集合

Collection:

Collection 不唯一,无序

List 不唯一,有序

Set 唯一,无序

ArrayList:内部使用长度可变的数组,遍历查询效率高

LinkedList:采用双向链表实现,增删改效率比较高

ArrayList:

常用方法:

ArrayList方法实例:

  public static void main(String[] args) {
        List list = new ArrayList();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("马六");
        System.out.println("大小为"+list.size());

        //指定位置插入,后面的会往后走
        list.add(3,"陈梦雨");
        System.out.println(list);

        //循环打印集合信息
        for(Object obj:list){
            System.out.println("循环打印"+obj);
        }

        //根据下标获取集合中的元素
        Object aa = list.get(1);
        System.out.println(aa);

        String bb = (String) list.get(2);
        System.out.println(bb);

        System.out.println("第三个"+list.get(3));

        //查找集合中是否存在指定元素
        boolean ccc = list.contains("马六");
        System.out.println(ccc);

        //根据下标删除
        list.remove(2);
        //根据元素删除,删除后,后面的会自动补过来
        list.remove("张三");

        //清空所有内容
        list.clear();
        System.out.println("清空后集合长度:"+list.size());

        //判断是否为空
        System.out.println("判断集合是否为空:"+list.isEmpty());
    }

LinkedList类:

LinkedList:采用双向链表实现,增删改效率比较高

常用方法:

链表本身不具备下标功能,但 LinkedList 类提供了下标访问方法以便于与 List 接口兼容。 所以LinkedList可以使用get()方法用来获取特定值。


 

Set接口:

Set接口存储一组唯一,无序的对象

Set接口不存在get()方法,因为没有下标

set接口下有两个实现类分别是HashSet和TreeSet

HashSet:
  • 底层结构:基于哈希表(HashMap),不保持元素的顺序。
  • 性能:提供常数时间复杂度的 add, remove, 和 contains 操作,适用于快速访问。
  • 特点:不保证元素的顺序,元素顺序可能会改变。对于需要不重复元素且对顺序无关的情况,HashSet 非常合适。

TreeSet:
  • 底层结构:基于红黑树(自平衡的二叉搜索树),保持元素的排序。
  • 性能:提供对 add, remove, 和 contains 操作的对数时间复杂度,适用于需要排序或范围查询的场景。
  • 特点:自动对元素进行排序(自然顺序或通过提供的 Comparator),使得可以遍历元素时按升序排列。

迭代器Iterator:

通过迭代器Iterator实现遍历

1.通过Set接口创建迭代器

2. hasNext(): 判断是否存在另一个可访问的元素

3.next(): 返回要访问的下一个元素

Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("C");

Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

方法2:增强型for循环

Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("C");

for (String item : set) {
    System.out.println(item);
}

Set接口如何判断加入对象是否已经存在呢?

采用对象的equals()方法比较两个对象是否相等,因为存放的是对象引用(地址

HashSet是Set接口常用的实现类
Set newsTitleSet = new HashSet();
  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值