javaee学习日记之java基础之集合类

来源:互联网 发布:php study redis 编辑:程序博客网 时间:2024/05/14 16:36

List接口集合(有序,元素可重复)
(在迭代过程中不可修改集合,但是迭代器可以修改集合)
子类有不同实现,各有不同
ArrayList类:底层是数组,允许所有元素,包括null,修改对象慢,可以快速访问。
LinkedList类:底层是链表,修改对象快,访问慢。

package demo.cn.baidu;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class Test {    public static void main(String[] args) {        List<Integer> list = new LinkedList<>();//创建集合        list.add(1);//添加元素        list.add(2);        list.add(3);        list.add(4);        for (int i = 0; i < list.size(); i++) {//获取集合长度            System.out.println(list.get(i));//通过索引获取值        }        list.set(2, 5);//通过索引修改值        System.out.println("---------------");        Iterator<Integer> it = list.iterator();//迭代器        while (it.hasNext()) {//是否存在元素            System.out.println(it.next());//输出下一个元素(从0-(size()-1))        }        list.set(0, 10);        System.out.println("---------------");        for (int i : list) {//增强for底层是迭代器            System.out.println(i);        }    }}

Set接口集合(无序,没有重复元素(对应八大包装类型和String进行栈内存和内容判断,(其它对象就进行栈内存判断)))
(在迭代过程中不可修改集合,但是迭代器可以修改集合)
子类有不同实现,各有不同
HashSet类:底层是哈希表,通过哈希值和equals()确定唯一性
TreeSet类:底层是红黑树,有顺序。

package demo.cn.baidu;import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class Test {    public static void main(String[] args) {        Set<Integer> set = new HashSet<>();//创建集合        set.add(5);//添加元素        set.add(5);        Iterator<Integer> it = set.iterator();//迭代器        while(it.hasNext()){//是否存在元素            System.out.println(it.next());//得到元素        }        System.out.println("-----------------");        Set<String> sets = new HashSet<>();        String s1 = new String("Hello");        String s2 = new String("Hello");//改变地址        String s3 = "Hello";        sets.add(s1);        s1 = "Java";//改变内容        sets.add(s1);        sets.add(s2);        sets.add(s3);        for(String s:sets){            System.out.println(s);        }        System.out.println("-----------------");        Set<Tool> set2 = new HashSet<>();        Tool tool = new Tool("Tom",25);        Tool tool2 = new Tool("Tom",25);//改变地址        set2.add(tool);        set2.add(tool2);        tool.setName("Jom");//改变内容        tool.setAge(28);        set2.add(tool);        System.out.println(set2.size());    }}

List和Set有共同父接口Collection

Map接口集合(键值对)
子类有不同实现,各有不同
HashMap:基于哈希表实现,查找速度快,添加快
TreeMap:映射存在顺序。

package demo.cn.baidu;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class Test {    public static void main(String[] args) {        Map<String, String> map = new HashMap<>();//创建        map.put("Tom", "man");//添加        map.put("Jim", "woman");        map.put("Zmi", "woman");        for (Map.Entry<String, String> ent : map.entrySet()) {            System.out.println(ent.getKey() + ":" + ent.getValue());        }        System.out.println("-------------------");        for (String s : map.keySet()) {            System.out.println(s + ":" + map.get(s));//获取键,通过键获取值        }        System.out.println("-------------------");        Iterator<Map.Entry<String, String>> ent = map.entrySet().iterator();        while (ent.hasNext()) {            Map.Entry<String, String> entry = ent.next();            System.out.println(entry.getKey() + ":" + entry.getValue());        }    }}
原创粉丝点击