collection集合体系
-
List接口:表示一个有序的集合,可以包含重复的元素,常用实现有:
- ArrayList:使用动态数组实现,随机访问速度快,但插入和删除时需要移动元素,效率较低。
- LinkedList:使用双向链表实现,适合频繁插入和删除操作,但随机访问性能较差。
-
Set接口:表示一个不允许重复元素的集合,主要实现有:
- HashSet:基于哈希表实现,插入、查找性能优越,不保证顺序。 LinkedHashSet:继承自HashSet,维护元素的插入顺序。
- TreeSet:基于红黑树实现,元素按自然顺序或指定比较器进行排序。
collection集合相关操作
Collection<String> c = new ArrayList<>();
// 创建集合,<>放在Collection后面表示集合里所放元素的类型,默认是Object类
c.add("java1");
c.add("java2");
c.add("java3");
c.add("java4");
c.add("java5");
System.out.println(c);
//public boolean remove(E e):删除某个元素:如果有多个重复元素默认删除前面的第一个!
c.remove("java2");
System.out.println(c);
//返回集合大小
System.out.println(c.size());
//判断集合中是否包含某个元素,返回true或false
System.out.println(c.contains("java3"));
System.out.println(c.contains("Java3"));
// 判断集合是否为空
System.out.println(c.isEmpty());
//void 清除集合中的元素
c.clear();
System.out.println(c);
将集合转为数组
Object[] arr = c.toArray(); // toArray返回的是Object类型数组
String[] arr3 = c.toArray(new String[c.size()]); // 指定toArray返回的类型
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr3));
c.toArray()返回的是Object类型数组
c.toArray(new String[c.size()]):指定toArray返回的类型
迭代器的使用
public class IteratorExample {
public static void main(String[] args) {
// 创建一个List并添加元素
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 获取迭代器
Iterator<String> iterator = list.iterator();
// 使用迭代器遍历集合
while (iterator.hasNext()) {
String fruit = iterator.next();
System.out.println(fruit);
}
}
}
- Iterator < E > iterator()返回集合中的选代器对象,该选代器对象默认指向当前集合的第一个元素
- hasNext():问当前位置是否有元素存在,存在返回true,不存在返回false。
- next():获取(返回)当前位置的元素,要有变量接收,再将选代器对象指向下一个元素处。
- remove():该方法用于从集合中移除当前遍历到的元素。注意,必须在调用next()之后调用remove(),否则会抛出IllegalStateException。
使用增强for循环遍历
for (String fruit : list) { // list.for回车
System.out.println(fruit);
}
Map集合介绍
-
Map接口:映射,存储键值对的集合,键是唯一的,值可以重复,主要实现有:
- HashMap:基于哈希表实现,提供快速的查找和插入,但不保证顺序。
- LinkedHashMap:基于哈希表实现,维护插入顺序。
- TreeMap:基于红黑树实现,按键的自然顺序排序。 Hashtable:早期的哈希表实现,不允许空键和空值,线程安全。
Map使用示例
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// 添加键值对(键不能重复)
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);
// 根据键获取对应值
System.out.println(map.get("Apple"));
// 遍历Map
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// 检查包含的键:containsKey, 返回布尔类型
System.out.println("Contains Banana: " + map.containsKey("Banana"));
// 返回集合的大小
System.out.println(map.size());
// 清空集合
map.clear;
System.out.println(map); // ->{}
// 判断集合是否为空
System.out.println(map.isEmpty()); // true
// public boolean containsValue(Object key):判断是否返回某个值
System.out.println(map.containsValue(2));
// 获取map集合中的所有值
Collection<String> c = map.values();
//
Map<String, Integer> map1 = new HashMap<>;
map1.put("java1", 10);
mapl.put("java2", 20);
Map<String,Integer> map2 = new HashMap<>();
map2.put("java3", 10);
map2.put("java2",222);
map1.putAll(map2);
System.out.println(map1); // {java3=10, java2=222, java1=10}
System.out.println(map2); // {java3=10,java2=222}
}
}