一、 数组和集合区别
使用数组,但是数组有局限性,比如 声明长度是10的数组,不用的数组就浪费了,超过10的个数,又放不下。而集合可以自动扩张
可以补两张,集合 集成的关系图:在网上看通过idea能查到关系图,不过我暂时没做到
二、使用ArrayList
1. 添加引用类型和基本类型数据
引用数据类型(对象、数组) 和 基本数据类型(整数byte short int long float double、字符串、字符、布尔类型)
public static void arrayList(){
//容器类ArrayList,用于存放数据
ArrayList<Object> heros = new ArrayList();
//数据类型:
heros.add(12);
heros.add('C');
heros.add("111");
heros.add(true);
heros.add(new Arrays[10]);
heros.add(new Hero("盖伦",50));
System.out.println(heros);
//输出[12, C, 111, true, [Ljava.util.Arrays;@74a14482, Hero{name='盖伦', price=50}]
//可以指定位置插入
heros.add(1,'D');
}
2. 使用迭代器遍历元素
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。
public static void arrayList(){
ArrayList<Object> heros = new ArrayList();
heros.add(12);
heros.add('C');
heros.add("111");
heros.add(true);
heros.add(new Arrays[10]);
heros.add(new Hero("盖伦",50));
//以正确的顺序返回该列表中的元素的迭代器
Iterator<Object> iterator = heros.iterator();
//遍历元素迭代器
while(iterator.hasNext()){
Object str = iterator.next();
System.out.println(str);
}
}
3. 其它两种遍历方式
for 循环 和 增强for循环
for(int i=0;i<heros.size();i++){
Object obj = heros.get(i);
System.out.println(obj);
}
for (Object obj:heros) {
System.out.println(obj);
}
4. 带泛型的集合
自己目前的理解,就是规定集合只能装一种数据类型,不符合装不进去,也不会出现遍历拿出时出错。
三、ArrayList 和 HashMap区别
最主要用途上区别:HashMap是键值对存储,ArrayList是单个值存储
四、使用HashMap
1.添加元素 和 使用迭代器迭代元素
public static void HashMapMethod(){
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("name","小溪");
hashMap.put("age",12);
System.out.println(hashMap);
//返回此map中包含的映射的Set视图
Set<Map.Entry<String, Object>> entries = hashMap.entrySet();
//迭代器
Iterator<Map.Entry<String, Object>> iterator = entries.iterator();
while (iterator.hasNext()){
Map.Entry<String, Object> next = iterator.next();
String key = next.getKey();
Object value = next.getValue();
System.out.println("键="+key+"---"+"值="+value);
}
}