java集合类详解(适合小白)

在这里插入图片描述

java集合类详解(适合小白)

1. Collection 接口

Collection是所有集合的根接口,主要有以下子接口:

List(有序集合)
  • ArrayList:基于数组实现,查询快,增删慢

  • LinkedList:基于双向链表实现,增删快,查询慢

  • Vector:线程安全的ArrayList(已过时)

    // List使用示例
    List<String> list = new ArrayList<>();
    list.add("张三");
    list.add("李四");
    list.get(0);  // 获取第一个元素
    
Set(不允许重复元素)
  • HashSet:基于HashMap实现,无序

  • TreeSet:基于红黑树实现,有序

  • LinkedHashSet:维护插入顺序

    // Set使用示例
    Set<String> set = new HashSet<>();
    set.add("苹果");
    set.add("香蕉");
    set.add("苹果");  // 重复元素不会被添加
    

2. Map 接口

Map用于存储键值对,主要实现类:

  • HashMap:最常用的Map实现,非线程安全
  • TreeMap:基于红黑树,按键排序
  • LinkedHashMap:维护插入顺序
  • Hashtable:线程安全(已过时)
// HashMap使用示例
HashMap<String, Integer> map = new HashMap<>();
map.put("苹果", 5);
map.put("香蕉", 3);
map.put("橙子", 4);

3. 常用方法

Collection接口常用方法
  • add(E e): 添加元素
  • remove(Object o): 删除元素
  • contains(Object o): 判断是否包含元素
  • size(): 获取集合大小
  • isEmpty(): 判断是否为空
  • clear(): 清空集合
Map接口常用方法
  • put(K key, V value): 添加键值对
  • get(Object key): 获取值
  • remove(Object key): 删除键值对
  • containsKey(Object key): 判断是否包含键
  • containsValue(Object value): 判断是否包含值

4. 线程安全的集合

Java提供了线程安全的集合类:

// 线程安全的List
List<String> syncList = Collections.synchronizedList(new ArrayList<>());

// 线程安全的Set
Set<String> syncSet = Collections.synchronizedSet(new HashSet<>());

// 线程安全的Map
Map<String, String> syncMap = Collections.synchronizedMap(new HashMap<>());

// 更现代的线程安全集合
List<String> concurrentList = new CopyOnWriteArrayList<>();
Set<String> concurrentSet = new ConcurrentSkipListSet<>();
Map<String, String> concurrentMap = new ConcurrentHashMap<>();

5. 集合的遍历

// 1. for-each循环
for (String item : list) {
    System.out.println(item);
}

// 2. Iterator迭代器
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String item = it.next();
    System.out.println(item);
}

// 3. Map的遍历
Map<String, Integer> map = new HashMap<>();
// 遍历键值对
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

迭代器流程图:

在这里插入图片描述

6. 注意事项

  1. 选择合适的集合类型:
  • 需要有序列表用ArrayList
  • 频繁增删用LinkedList
  • 需要唯一性用Set
  • 需要键值对用Map
  1. 线程安全考虑:
  • 单线程环境使用普通集合类
  • 多线程环境使用线程安全的集合类
  1. 性能考虑:
  • 初始容量设置合理
  • 避免频繁扩容
  • 选择合适的集合类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值