转自:
http://www.java265.com/JavaCourse/202206/3753.html
下文将对java集合进行详细的讲解,如下所示
Java集合的概念
java集合特性: 1.大小不固定,但可动态变化 2.类型可不固定,因为其是一个泛型集合容器 3.集合非常适合元素的增删操作 java集合注意事项: java集合中只能存入引用类型数据 如果要储存基本类型数据,需使用包装类 java集合使用场景: 当存储数据的数量未知的情况下 可以通过定义集合来实现 可以有效的避免容量不够
java集合
java集合分为两大不同结构 一:Collection(用于存储单列数据) 每个元素在集合中只存储一个值 二:Map(用于存储双列数据) 每个元素采用键值对的方式存储
java集合每一个分类的特性
List系列集合:添加的元素是有序、可重复、有索引 ArrayList、LinekdList:有序、可重复、有索引 Set系列集合:添加的元素是无序、不重复、无索引 HashSet:无序、不重复、无索引 LinkedHashSet:有序、不重复、无索引 TreeSet:按照大小默认升序排序、不重复、无索引 List系列集合:有序、可重复、有索引
例:
Collection list = new Arrayslist(); list.add(\"Java265\"); list.add(\"Java265\"); list.add(\"刘允熙\"); list.add(891); list.add(678); list.add(true); list.add(false); System.out.println(list); //输出结果: [Java265,Java265,刘允熙,891,678,true,false] Set系列集合:无序、不重复、无索引 Collection list = new HashSet(); list.add(\"Java265\"); list.add(\"Java265\"); list.add(\"刘允熙\"); list.add(891); list.add(678); list.add(true); list.add(false); System.out.println(list); //输出结果: [false, 刘允熙, 678, Java265, 891, true]
集合对于泛型的支持
java中集合都是支持泛型 用于在编译阶段约束集合只能操作某种数据类型 例: Collection<String> lists = new ArrayList<String>(); Collection<String> lists = new ArrayList();//JDK1.7开始后面的泛型类型可以省略不写 注意事项: 1.集合和泛型都只支持引用数据类型,不支持基本数据类型 2.集合中存储的元素一定是对象
报错写法: Collection<int> lists = new ArrayList<>();//报错
集合中存储基础类型的放啊
Collection<Integer> lists = new ArrayList<>(); Collection<Double> lists = new ArrayList<>();
Collection常用API
public static void main(String[] args) { Collection<String> list = new ArrayList<>(); //1、添加元素,成功则返回true list.add(\"Java265\"); System.out.println(list.add(\"刘允熙\")); System.out.println(list); System.out.println(\"------------------------\"); //2、清空集合中的元素 list.clear(); System.out.println(list); System.out.println(\"------------------------\"); //3、判断元素是否为空,是空返回true,反之则false System.out.println(list.isEmpty()); //4、获取集合的大小 System.out.println(\"------------------------\"); System.out.println(list.size()); System.out.println(\"------------------------\"); //5、判断集合中是否包含某个元素 list.add(\"Java265\"); list.add(\"刘允熙\"); System.out.println(list.contains(\"Java265\")); System.out.println(\"------------------------\"); //6、删除某个元素,若有重复,则默认删除第一个 list.add(\"Java265\"); System.out.println(list); list.remove(\"石原静香\"); list.remove(\"Java265\"); System.out.println(list); System.out.println(\"------------------------\"); //7、把集合转换成数组 Object[] array = list.toArray(); System.out.println(Arrays.toString(array)); System.out.println(\"------------------------\"); //8、将一个集合中的元素添加到另一个集合中 Collection<String> l1 = new ArrayList<>(); Collection<String> l2 = new ArrayList<>(); l1.add(\"Java265\"); l1.add(\"刘允熙\"); l2.add(\"朱茵\"); l2.add(\"紫霞仙子\"); l1.addAll(l2); System.out.println(l1); System.out.println(l2);//l2中的元素没有变化 }
遍历Java集合的方式
迭代器遍历
遍历就是一个一个的把容器中的元素访问一遍 迭代器在Java中的代表是iterator,迭代器是集合的专用遍历方式
Collection<String> list = new ArrayList<>(); list.add(\"Java265\"); list.add(\"刘允熙\"); list.add(\"朱茵\"); list.add(\"紫霞仙子\"); Iterator<String> it = list.iterator(); while(it.hasNext){//判断索引处有无值 System.out.println(it.next);//从零索引开始取值,取过值以后,索引后移 }
增强for循环
增强for循环 既可以遍历集合也可以遍历数组 它是JDK5之后出现的 其内部原理是一个lterator迭代器 遍历集合相当于是迭代器的简化写法 实现lterable接口的类才可以使用迭代器和增强for Collection接口已经实现了lterable接口
增强for循环的语法格式
for(元素数据类型 变量名 : 数组或者Collection集合){ 在此处使用变量即可,该变量就是元素 } Collection<String> list = new ArrayList<>(); for(String s : list){ System.out.println(s); }
Lambda表达式对java集合的操作
例:采用匿名内部类对集合进行操作
Collection <String>list = new ArrayList<>(); list.forEach(new Consumer<String>(){ @Override public void accept(String s){ System.out.println(s); } }); //简化为Lambda表达式 list.forEach(s->{ System.out.println(s); }); //或者更加简化: list.forEach(s -> System.out.println(s));
集合存储自定义类的变量
例:
创建一个User类
分别创建两个对象s1和s2
将这两个对象储存在集合之中
并通过遍历方法进行输出
Collection<User> Users = new ArrayList<>(); User s1 = new User(\"柳絮\",\"智能\",26,1); Users.add(s1); User s2 = new User(\"李世民\",\"数据库\",16,2); Users.add(s2); for(User User:Users){ System.out.println(\"姓名:\"+User.getName()); System.out.println(\"学号:\"+User.getNum()); System.out.println(\"年龄:\"+User.getAge()); System.out.println(\"班级:\"+User.getClassroom()); System.out.println(\"-------------------------\"); }
来源:https://www.cnblogs.com/java265/p/16388683.html
本站部分图文来源于网络,如有侵权请联系删除。