集合框架问题详解

倾然丶 夕夏残阳落幕 提交于 2020-03-21 18:03:49

3 月,跳不动了?>>>

什么是集合???

用一句话来概括就是,集合就是存放“类对象“的容器,集合类存放于java.util包中,集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。集合类型主要有3种:set(集)、list(列表)和map(映射)。集合接口分为:Collection和Map,list、set实现了Collection接口。

集合相对于数组的作用

  集合相对于数组来说有很多的优势,比如说集合的长度可以改变,但是数组的长度就不能改变,只要确定后就永远都不可以改变。集合大体分为三种,list集合 set集合和map集合。这三种集合各有优势,我们平时用的大多是list和map。list集合的优势在与读取速度快,适合用来遍历数据,因为list集合根本还是数组,只不过是在数组上面做了很多的运算才使得他可一改变长度。而map集合的优势是他查找数据容易,应为他包含了两个对象,可以很快的查找数据,改变数据。

使用Iterator遍历结合的方法

public class MyTest {
    public static void main(String[] args) {
        //1iterator 迭代ArrayList集合
        List list = new ArrayList<>();
        //集合
        list.add("a");
        list.add("b");
        list.add("c");
        //获取迭代器
        Iterator iter = list.iterator();
        //判断下一个元素是否存在
        while (iter.hasNext()){
            //存在使用next迭代
            Object o = iter.next();
//            if(o.equals("a")){
//                iter.remove();
//            }
            System.out.println("数字分别是:"+o);

        }

        //2iterator迭代set集合
        HashSet set = new HashSet<>();
        set.add(new Theme(1,"标题1","内容1"));
        set.add(new Theme(2,"标题2","内容2"));
        Iterator ite = set.iterator();
        while (ite.hasNext()){
            Theme theme = (Theme)ite.next();
            System.out.println(theme.getNumber()+","+theme.getTitle()+","+theme.getIntroduce());
        }

        //3iterator迭代map集合
        //①:相对来说比较麻烦
        Map map=new HashMap<>();
        map.put(1,"陈诚");
        map.put(2,"余恩丽");
        map.put(3,"赵容");
        //返回键的集合
        Set keySet = map.keySet();
        Iterator itera = keySet.iterator();
        while (itera.hasNext()){
            System.out.println((int)itera.next());
        }
        //返回值的集合
        Collection values = map.values();
        Iterator iteraa = values.iterator();
        while (iteraa.hasNext()){
            System.out.println((Object) iteraa.next());
        }
        //②、:enrtySet
        Set set1=map.keySet();//得到键的集合
        Collection values1=map.values(); //得到值的集合

//        Set<Map.Entry<Integer,String>> entrySet = map.entrySet();
        Iterator<Map.Entry<Integer, String>> entryIterator = map.entrySet().iterator();
        while (entryIterator.hasNext()){
            Map.Entry<Integer, String> entry = entryIterator.next();
            System.out.println("键是:"+entry.getKey()+",值是:"+entry.getValue());
        }
    }
}

keySet是键的集合,Set里面的类型即key的类型,entrySet是 键-值 对的集合,Set里面的类型是Map.Entry

 使用迭代删除Arraylist中的数据

//准备数据
        List<Student> list = new ArrayList<>();
        list.add(new Student("male"));
        list.add(new Student("female"));
        list.add(new Student("female"));
        list.add(new Student("male"));
 
        //遍历删除,除去男生
        Iterator<Student> iterator = list.iterator();
        while (iterator.hasNext()) {
            Student student = iterator.next();
            if ("male".equals(student.getGender())) {
                iterator.remove();//使用迭代器的删除方法删除
            }
        }

使用迭代删除HashMap中的数据

虽然Map没有迭代,但是它的entrySet有啊,所以我们可以通过它来实现遍历删除

Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
  entry = iterator.next();
  if (entry.getValue() % 2 == 0) {
    iterator.remove();
  }
}
System.out.println(map);

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!