这是我自己学集合的时候一些总结

一、集合:了解使用集合的步骤

1.创建集合对象

2.创建元素对象

3.将元素对象添加到集合对象中

4.遍历集合

(1)list集合代码如下:

public class test {

    public static void main(String[] args) {

        //1.创建集合对象

        List list = new ArrayList();

        //2.创建元素对象

        student s1 = new student(1, "苏少有");

        student s2 = new student(2, "苏少有2");

        //3.将元素对象添加到集合对象中

        list.add(s1);

        list.add(s2);

        System.out.println("list有"+list);

        //获取索引为1的元素

        Object obj = list.get(1);

        System.out.println("索引为1的是"+obj);

        //获取集合中的元素个数

        System.out.println("集合长度为"+list.size());

        //遍历集合

        for (int i = 0; i < list.size() ; i++) {

            Object obj2 = list.get(i);

            System.out.println("集合有"+obj2+"数据");

 

        }

 

 

 

 

    }

}

(2)增强for循环(for Each/迭代器)

*增强for循环

  for(数据类型 变量名 :数组或者集合对象) {

        //循环体,变量以及元素

  }

  //增强for循环快捷键 iter+enter

  增强for循环就是迭代器的简写模式。

*

* */

public class demo2 {

    public static void main(String[] args) {

        List list=new ArrayList();

        list.add(10);

        list.add(10);

        list.add(20);

        list.add(30);

        list.add(40);

        for(Object obj :list){

            System.out.println(obj);

 

        }

        System.out.println("=========");

        for (Object obj2 : list) {

            Integer ii=(Integer)obj2;

            System.out.println(ii);

 

        }

 

    }

}

(3)通过迭代器遍历list集合

package demo3;

 

import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;

 

/*迭代器的常用方法

     E.next();  返回迭代器的下一个元素对象.再写三层dao层查询用到resultset 遍历时while循环里面有rs.next()

     boolean hasNext(); 如果有元素可以迭代,则返回true

 注意:列表迭代器是List体系中独有的遍历方式,可以在对集合遍历的同时进行添加、删除等操作。

 但是必须通过调用列表迭代器的方法来实现。

 迭代器的使用步骤:

 1.根据集合对象获取其对象的迭代器对象

 2.判断迭代器中是否有对象

 3.如果有就获取元素

 总结:普通迭代器在遍历集合的同时不能添加或删除元素,否则会报:并发修改异常

     列表迭代器在遍历集合的同时可以添加删除集合中的元素,但必须要用列表迭代器的方法

* */

public class test {

    public static void main(String[] args) {

 

 

        //需求:测试列表迭代器

        List list = new ArrayList();

        list.add("a");

        list.add("b");

        list.add("c");

        //需求:判断集合中如果有字符串”b“,就在其后面添加一个新的字符串:java

        //1.根据集合对象获取列表迭代器对象

        ListIterator lit = list.listIterator();

        //2.判断迭代器中是否有对象

        while (lit.hasNext()) {

            //3.如果有就获取元素

            String s=(String)lit.next();

            if ("b".equals(s)){

               // list.add("java");这样写不行,必须调用列表迭代器的方法来实现

                lit.add("java");

            }

            System.out.println(s);

        }

        System.out.println("========");

        System.out.println(list);

    }

}

(4)set集合

package demo6;

/*      单列集合(Collection)之Set集合

          特点:无序,唯一

          结论:Set集合保证所有的元素的唯一性依赖: equals()方法和hashCode()方法

 */

 

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

 

public class test {

    public static void main(String[] args) {

        //需求:往Set集合中添加五个学生对象,然后遍历

        Set<student> set =new HashSet<student>();

        student s1=new student("苏少有",21);

        student s2=new student("苏少有2",22);

        student s3=new student("苏少有3",23);

        student s4=new student("苏少有4",24);

        student s5=new student("苏少有",21);

        set.add(s1);

        set.add(s2);

        set.add(s3);

        set.add(s4);

        set.add(s5);

        System.out.println(set);

        System.out.println("-----------");

        /*打印输出语句时Set集合没有“去重”?

            因为Set集合保证元素的唯一性依赖:equals()和hashCode()两个方法

            你没有在student类中重写这两个方法,默认调用的是Object类中的这两个方法,

            Object类中的equals()方法默认比较的是地址值是否相同

           解决方案:

              student类中重写equals()和hashCode()方法

 

         */

        //通过迭代器遍历Set集合

        //1.通过集合对象获取对象的迭代器对象

        Iterator<student> it = set.iterator();

        //2.判断迭代器中是否有元素

        while (it.hasNext()){

            //3.如果有就获取元素

            student s=it.next();

            System.out.println(s);

        }

        System.out.println("--------");

        //增强for循环

        for (student stu : set) {

            System.out.println(stu);

 

        }

 

    }

}

student实体类

package demo6;

 

import java.util.Objects;

 

public class student {

    private String name;

    private int age;

 

    public student() {

    }

 

    public student(String name, int age) {

        this.name = name;

        this.age = age;

    }

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

 

    public int getAge() {

        return age;

    }

 

    public void setAge(int age) {

        this.age = age;

    }

 

    @Override

    public String toString() {

        return "student{" +

                "name='" + name + '\'' +

                ", age=" + age +

                '}';

    }

 

    @Override

    public boolean equals(Object o) {

        if (this == o) return true;

        if (o == null || getClass() != o.getClass()) return false;

        student student = (student) o;

        return age == student.age && Objects.equals(name, student.name);

    }

 

    @Override

    public int hashCode() {

        return Objects.hash(name, age);

    }

}

(5)Map集合

package demo7;

 

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

 

/* Map集合的特点

        特点:

         双列集合,元素由键值对(Entry)构成;

         key(键)----value(值)

        注意:

         (key)不可以重复,值(value)可以重复

         应用:

            Map<T1,T2> map = new HashMap<>();

            解释:

               T1:表示键的数据类型

               T2:表示值的数据类型

         成员方法:

         V put(K key,V value);添加元素(键值对的形式)

         V get(Object key);根据键获取对应的值

           Set<k> keySet()     获取所有键的集合;

         遍历Map集合步骤:

         1.获取所有键的集合   keySet()

         2.遍历所有的键,获取到每一个键    迭代器 增强for

         3.根据键,获取指定值          get()

 

* */

public class test {

    public static void main(String[] args) {

        Map<Integer,student> map=new HashMap<Integer,student>();

        student s1=new student("张三",21);

        student s2=new student("李四",22);

        student s3=new student("王五",23);

        student s4=new student("张三",21);

        map.put(1,s1);

        map.put(2,s2);

        map.put(3,s3);

        map.put(4,s4);

        //根据键获取值

        student stu1=map.get(2);

        System.out.println(stu1);

        //打印集合

        System.out.println(map);

        System.out.println("-----");

        //遍历集合

        //1.获取所有键的集合   keySet()

        Set<Integer> keys = map.keySet();

        //2.遍历所有的键,获取到每一个键    迭代器 增强for

        Iterator<Integer> it = keys.iterator();

        while(it.hasNext()){

            //.根据键,获取指定值          get()

            Integer key = it.next();

            student value = map.get(key);

            System.out.println("key:"+key+"...value:"+value);

 

        }

        System.out.println("-------------");

        //增强for

        for (Integer key : keys) {

            student value = map.get(key);

            System.out.println("key:"+key+"....value:"+value);

 

        }

 

 

 

    }

}

 

.泛型

 

/*泛型的好处

 类型安全

 避免了类型转换

* */

public class test {

    public static void main(String[] args) {

        //需求:演示泛型

        //1.创建集合对象

        List<String> list2=new ArrayList<String>();

        //2.创建元素对象

        list2.add("a");

        list2.add("b");

        list2.add("c");

 

        //3.将元素对象添加到集合对象中

        for (String s : list2) {

            System.out.println(s);

 

 

        }

        

        }

 

 

}

.Collection类的使用

/*      Collections:针对集合操作的工具类

     成员方法:

         max(Collection<T>) ;返回集合的最大元素

         sort(List<T>);      根据元素的自然顺序,将指定列表升序排列

         reverse(List<T>);   反转集合list里的元素

         shuffle(List<T>);   使用默认的随机源随机置换指定的列表

 

* */

public class test {

    public static void main(String[] args) {

        List<Integer> list = new ArrayList<Integer>();

        list.add(1);

        list.add(2);

        list.add(2);

        list.add(3);

        list.add(5);

        list.add(7);

        list.add(4);

        System.out.println("没操作前,集合里的元素有" + list);

        System.out.println("----------");

        //获取集合最大元素

        Integer max = Collections.max(list);

        System.out.println("集合中的最大元素为"+max);

        System.out.println("------------");

        //对集合进行升序排列

        Collections.sort(list);

        System.out.println("s升序排列后集合为"+list);

        Collections.reverse(list);

        System.out.println("反转后集合为"+list);

        Collections.shuffle(list);

        System.out.println("随机集合元素为"+list);

 

 

    }

}

 

posted @ 2021-11-25 09:24  苏unique  阅读(96)  评论(0)    收藏  举报