集合
数组
List
-
ArrayList
- 初始容量是10
- 扩容方式在整数范围内原有容量*1.5倍
-
LinkedList
- ArrayList底层是一个数组 可以随机访问->通过下表访问(list.get(20))
- LinkedList 是一个链表 不能做随机访问,
对比
- 数组一旦确定后 容量就不能改变了
- ArraList 可一进行自动扩容
- 数组使用的空间要小 ArrayList使用的空间要大一些
- 数组可以是基本类型的 List都要是包装类型-》都要是对象的
//一旦确定之后长度就不能变化了
int n=new Scanner(System.in).nextInt();
String[] strs=new String[n];
//你可以随便添加元素 不定长 自动扩容的
List<String> list =new ArrayList<>();
List<Integer> list1 =new ArrayList<>();
//在最后面添加一个元素
list.add("A");
list1.add(1);
// //删除一个元素
// list.remove("A");
//在某个位置设置成某个元素
list.set(0,"B");
//假如你一开始就是知道大概需要多大的空间
new ArrayList<String>(100);
//常规循环
for (int i = 0; i < list.size(); i++) {
//获得指定位置的元素
String s = list.get(i);
System.out.println(s);
}
//foreach循环
for (String s : list) {
System.out.println(s);
}
list.forEach(System.out::println);
list.forEach(e->{
System.out.println(e);
});
LinkedList<Object> objects = new LinkedList<>();
Map
HashMap
-
key不重复 后面的覆盖前面
-
key value结构
-
输入顺序和存储顺序不一定一致
TreeMap
//默认是根据key的自然顺序做的排序
TreeMap<String, String> treeMap = new TreeMap<>();
treeMap.put("345","345763");
treeMap.put("2334566","adsfgadfhgaedhf");
treeMap.put("123","123");
treeMap.put("234","234354");
System.out.println(treeMap.get("123"));
System.out.println(treeMap);
Set
set中的元素不重复
HashSet
TreeSet
- 根据元素的自然顺序做的排序
Set<String> set =new HashSet<>();
set.add("a");
set.add("a");
set.add("a");
System.out.println(set);
Iterator<String> iterator1 = set.iterator();
while (iterator1.hasNext()){
System.out.println(iterator1.next());
}
for (String s : set) {
System.out.println(s);
}