Spark-Java Day 20

1 集合(集合是java中提供的一种容器,可以用来存储多个数据)
1.1 集合体系结构
a 集合主要分为两大系列:Collection和Map,Collection表示一组对象,Map表示一组映射关系或键值对
b Collection根接口 子接口 List Set Queue …

public class TestCollection {
    public static void main(String[] args) {
        Collection<String> objects = new ArrayList<>();
        objects.add("aa");
        objects.add("bb");
        System.out.println("objects = " + objects);
        System.out.println("objects.size() = " + objects.size());
        System.out.println("objects.contains(\"aa\") = " + objects.contains("aa"));
        System.out.println("objects.toArray() = " + objects.toArray());
        System.out.println("objects.remove(\"aa\") = " + objects.remove("aa"));
        System.out.println("objects.size() = " + objects.size());
        objects.clear();
        System.out.println("objects.isEmpty() = " + objects.isEmpty());

        Collection objects1 = new ArrayList();
        objects1.add(1);
        objects1.add(1);
        objects1.add(1);

        objects.addAll(objects1);
        System.out.println(objects);
    }
}

1.2 Iterator迭代器
(1) 作用:遍历集合中所有元素
(2) 作用:并不是所有的集合都能使用Iterator迭代器,前提条件是Iterator的接口子接口(如Map就无法使用)

public class TestIter {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        coll.add("a");
        coll.add("b");
        coll.add("c");

        Iterator<String> iterator = coll.iterator();

        while (iterator.hasNext()){
            System.out.println("iterator.next() = " + iterator.next());
        }
    }
}

(3) 不要在使用Iterator迭代器进行迭代时,调用Collection的remove(XX)方法,否则会报异常或者出现不确定行为
1.3 增强for循环
(1)迭代器代码进行简化编写,在JDK1.5开始提供简写方式,成为增强for循环,底层是迭代器
(2)语法:
for(元素类型 名称 : 要遍历的集合或数组){
}

for(String item: arrays){

}

2 List接口
(1)List接口特点。
a List接口是Collection接口的子接口。
b List存储是有序的,可以有重复元素。
c List接口有很多实现类,List底层结构可以是数组、链表。
(2) List常用方法。

public class TestList {
    public static void main(String[] args) {
        List<String> l =new ArrayList<>();
        l.add("a");
        l.add("b");
        l.add("c");
        for (int i = 0; i < l.size(); i++) {
            System.out.println("l.get(i) = " + l.get(i));
        }
        for (String s : l){
            System.out.println("s = " + s);
        }

        l.remove("a");
        System.out.println("l.size() = " + l.size());
        l.set(0, "f");
        for (String s : l){
            System.out.println("s = " + s);
        }

    }
}

(3)List实现类(ArrayList(),Vector(),LinkedList())
ArrayList:
-数据存储结构是数组结构,元素增删慢,查找快
创建List集合,有三部分:Object数组,size,modCount
Object数组默认大小是0
向集合添加数据(长度为10–任意),Object数组大小变成10
向数组中添加数据超过了10,进行扩容,1.5倍
Vector:
语法:List l =new Vector<>();
数据存储结构与ArrayList相同,都是数组,解决线程安全问题
Vector方法上添加synchronized
Vector扩容是2倍大小
a 创建 vector对象时,有四部分,
Obejct数组初始值是10,elementCount(元素个数)、capacityIncrement,默认是0,modCount版本默认是0
LinkedList:
语法:List l =new LinkedList<>();
数据存储结构:链表(双向)
创建LinkedListd对象,包含四部分,size元素数量,first,last,modcount
添加元素的时候,第一次添加元素的时候作为首节点和尾节点。
再次添加时在首节点下一个节点添加一个节点,并指向上一个节点。
3 Set接口
a Collection子接口
b Set接口不能重复,无序
c Set遍历可以使用迭代器,增强for循环,常用实现类有HashSet、TreeSet、LinkedHashSet.
d HashSet底层是HashMap,LinkedHashSet是HashSet子类。TreeSet底层是TreeMap,使用红黑树
e HashSet底层是HashMap,向Set集合添加数据,会成为map集合中key值

public class TestSet {
    public static void main(String[] args) {
        Set<String> objects = new HashSet<>();

        objects.add("aaa");
        objects.add("aaa");
        objects.add("aaa");
        objects.add("bb");

        for (String value:objects) {
            System.out.println("value = " + value);
        }
    }
}
  • 补充内容
    使用LinkedList实现栈(先进后出)和队列(先进先出)操作
    3.1 ListIterator是Iterator的子接口,遍历List集合。向前遍历
    4 Map集合
    Map中不能包含重复的键,值可以重复,每个键只能对应一个值
    4.1 常用方法
    a 添加方法 put(K key, V value)
    b 根据key获取对应的value值 get(key)
    c 移除 remove(key)
    d 返回map集合所有key Set keySet()
    e 返回map集合所有value值 Collection values()
    f 清空map集合 clear()
public class TestMap {
    public static void main(String[] args) {
        Map<String, String> objectObjectHashMap = new HashMap<>();


        objectObjectHashMap.put("12","张三");
        objectObjectHashMap.put("13","张5");
        objectObjectHashMap.put("14","张4");
        objectObjectHashMap.put("15","张");

        System.out.println("objectObjectHashMap.get(\"15\") = " + objectObjectHashMap.get("15"));
        System.out.println("objectObjectHashMap.keySet() = " + objectObjectHashMap.keySet());
        System.out.println("objectObjectHashMap.values() = " + objectObjectHashMap.values());
        System.out.println("objectObjectHashMap.remove(\"14\") = " + objectObjectHashMap.remove("14"));
        System.out.println("objectObjectHashMap = " + objectObjectHashMap);
        objectObjectHashMap.clear();
        System.out.println("objectObjectHashMap = " + objectObjectHashMap);
    }
}

4.2 集合遍历
第一种:获取map中所有key,根据key获取vaule值

Set<String> strings = objectObjectHashMap.keySet();

for (String ss:strings) {
    String va = objectObjectHashMap.get(ss);
    System.out.println(ss+":"+va);
}

第二种:直接获取map里面的key-value关系,获取key和value

 Set<Map.Entry<String, String>> entries = objectObjectHashMap.entrySet();
for (Map.Entry<String, String> s: entries) {
    System.out.println(s.getKey()+":"+s.getValue());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值