Java基础篇 您所在的位置:网站首页 表示集合的方法讲解 Java基础篇

Java基础篇

2024-07-10 03:35| 来源: 网络整理| 查看: 265

 🤦‍♂️🤦‍♂️集合详细解读+使用 🤦‍♂️🤦‍♂️

🎉🎉Java入门级教程🎉🎉

🌹🌹适合刚学习Java的小白选手🌹🌹

😃😃快来学习一下吧~~~ 😃😃

🤦‍♂️🤦‍♂️看完意犹未尽如果想用集合实现一个简易系统的话可以看👇这一篇🐱‍🏍🐱‍🏍

🎁🎁极简图书管理系统🐱‍👤🐱‍👤

目录

一、集合的体系和特点

二、集合的常用API

三、集合的遍历方式

        迭代器遍历

        foreach遍历

四、List集合

        ArrayList集合的研究

        LinkedList集合的研究

五、Set集合

六、Map集合

        Map集合常用的API

        Map集合的遍历方式

七、Collcetions工具类的使用

八、可变参数

一、集合的体系和特点

集合是一个大小可变的容器。 容器中的每个数据称为一个元素。 集合的特点是:类型可以不确定,大小不固定。 集合有很多种,不同的集合特点和使用场景不同。 数组:类型和长度一旦被定义就已经固定。集合的作用: 在开发中,很多时候元素个数是不确定的。 经常要进行元素的增删改查,集合都是非常合适的。

Java中集合的代表是:collectioncollection集合是Java中集合的祖宗类。

        接口                                                  Collcetion

                                                        /                                           \

        接口                                    Set                             List

                                             /                 \                        /                     \

                                   HashSet     TreeSet    ArrayList       LinkedList

                                       /

                LinkedHashSet

集合的特点: set系列集合:添加的元素是无序,不重复,无索引的。 --hashset:添加的元素是无序,不重复,无索引的。 --linkedhashset:添加的元素是有序,不重复,无索引的。 --treeset:按照大小默认升序排序。

List系列集合:添加的元素是有序,可重复,有索引。 --arraylist:添加的元素是有序,可重复,有索引。 --linkedlist:添加的元素是有序,可重复,有索引。

二、集合的常用API package 集合; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; public class List1 { public static void main(String[] args) { // TODO Auto-generated method stub //添加元素,添加成功返回true Collection list = new ArrayList(); System.out.println(list.add("贾乃亮")); System.out.println(list.add("贾乃亮")); System.out.println(list.add("王宝强")); System.out.println(list.add("陈羽凡")); //清空集合 list.clear(); //判断集合是否为空 System.out.println(list.isEmpty()); //获取集合的大小。 System.out.println(list.size()); //集合中是否包含某个元素 System.out.println(list.contains("贾乃亮")); //删除某个元素,如果有重复元素默认删除第一个。 list.remove("贾乃亮"); //把集合转成数组。 Object []arr = list.toArray(); System.out.println(Arrays.toString(arr)); } }

三、集合的遍历方式 迭代器遍历: public class List2 { public static void main(String[] args) { // TODO Auto-generated method stub Collection list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); System.out.println(list); //得到集合的迭代器对象 Iterator it = list.iterator(); //1.不断的获取下一个元素 //E next()获取下一个元素 System.out.println(it.next()); System.out.println(it.next()); System.out.println(it.next()); System.out.println(it.next()); //2.使用while循环 //boolean hasnext()判断是否有下一个元素 while(it.hasNext()) { int ele = it.next(); System.out.println(ele); } } } foreach遍历

foreach可以遍历集合或者数组。

缺点:无法知道遍历到了哪个元素。

package 集合; import java.util.ArrayList; import java.util.Collection; public class List3 { public static void main(String[] args) { // TODO Auto-generated method stub Collection list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); for(int ele:list) { System.out.println(ele); } int []ages = new int[] {10,12,14}; for(int age:ages) { System.out.println(age); } } } 四、List集合 ArrayList集合的研究

ArrayList实现类集合底层基于数组存储数据的,查询快,增删慢、 增删慢是相对来说。 ArrayList在开发中用的最多。

import java.util.ArrayList; import java.util.List; public class List4 { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个ArrayList集合对象,一行经典代码 List list = new ArrayList(); list.add("java1"); list.add("java1"); list.add("java2"); list.add("java2"); //在某个索引处插入元素 list.add(2,"mysql"); //根据索引删除元素, 返回被删除元素 System.out.println(list.remove(2)); //根据索引获取元素 System.out.println(list.get(2)); //修改索引位置处的元素 list.set(2, "mybatis"); System.out.println(list); } } LinkedList集合的研究

是list的实现类,底层是基于链表的,增删比较快,查询慢。 支持双链表,定位前后的元素是非常快的,增删首尾的元素也是最快的。

import java.util.LinkedList; public class List5 { public static void main(String[] args) { // TODO Auto-generated method stub //用linkedlist做一个队列:先进先出 LinkedList queue = new LinkedList(); queue.addLast("1号"); queue.addLast("2号"); queue.addLast("3号"); queue.addLast("4号"); System.out.println(queue); //出队:每次出第一个位置。 System.out.println(queue.removeFirst()); System.out.println(queue.removeFirst()); System.out.println(queue); LinkedList stack = new LinkedList(); //实现一个栈结构:先进后出,后进先出。 //入栈 stack.push("1号"); stack.push("2号"); stack.push("3号"); stack.push("4号"); System.out.println(stack); //出栈 System.out.println(stack.pop()); System.out.println(stack.pop()); System.out.println(stack); } } 五、Set集合

set系列无重复的原因,如何去重复?

1、对于有值特性的,Set集合可以直接判断进行去重复。

2、对于引用数据类型的对象,Set集合是按照如下流程进行是否重复的判断。

Set集合会让两个对象,先调用自己的Hashcode()方法,得到彼此的哈希值。

然后比较两个对象的哈希值是否相同,如果不相同则直接认为两个对象不重复。

如果哈希值相同,会继续让两个对象进行equals比较内容是否相同,如果相同认为重复。

六、Map集合

map集合的特点:

1、map集合的特点都是由键决定的。

2、map集合的键时无序的,不重复的,无索引的。

        map集合后面重复的键对应的元素会覆盖前面的整个元素。!

3、map集合的值无要求。

4、map集合的键值对都可以为null。

Map集合常用的API package map; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; public class Map3 { public static void main(String[] args) { // TODO Auto-generated method stub Map map = new HashMap(); map.put("object1", 1); map.put("object2", 2); map.put("object3", 3); map.put(null, null); System.out.println(map); //判断集合是否为空 System.out.println(map.isEmpty()); //根据键值获取对应值 System.out.println(map.get("object1")); //根据键删除某个元素 map.remove("object1"); //判断是否包含某个键,包含则返回true System.out.println(map.containsKey("object2")); //判断是否包含某个值 System.out.println(map.containsValue(2)); //获取全部键的集合 Set keys = map.keySet(); for(String key:keys) { System.out.println(key); } //获取全部值的集合 Collection values = map.values(); for(Integer value:values) { System.out.println(value); } //获取集合的大小 System.out.println(map.size()); //合并其他map集合 Map map2 = new HashMap(); map2.put("object4", 4); map2.put("object5", 5); map.putAll(map2);//把map2的数据全部倒入到map中去 System.out.println(map); } } Map集合的遍历方式

键找值的方式遍历:先获取map集合全部的键,再根据遍历键找值。

先获取map集合的全部键的set集合。 遍历键的set集合,然后通过键找值。

package map; import java.util.HashMap; import java.util.Map; import java.util.Set; public class Map1 { public static void main(String[] args) { // TODO Auto-generated method stub Map map = new HashMap(); map.put("object1", 1); map.put("object2", 2); map.put("object3", 3); Set keys = map.keySet(); for(String key:keys) { Integer value = map.get(key); System.out.println(key+"="+value); } } }

键值对的方式遍历:难度较大。 面向对象的方式。 把键值对当成一个整体来遍历,也是用foreach

 步骤: 1、把Map集合转换成一个Set集合:Set entrySet(); 2、此时键值对元素的类型就确定了,类型是键值对实体类型:Map.Entry 3、接下来就可以用foreach遍历这个Set集合,

package map; import java.util.HashMap; import java.util.Map; import java.util.Set; public class Map2 { public static void main(String[] args) { // TODO Auto-generated method stub Map map = new HashMap(); map.put("object1", 1); map.put("object2", 2); map.put("object3", 3); Set entries = map.entrySet(); for(Map.Entry entry:entries) { String key =entry.getKey(); Integer value = entry.getValue(); System.out.println(key+"="+value); } } }

lambda遍历:

package map; import java.util.HashMap; import java.util.Map; import java.util.Set; public class Map2 { public static void main(String[] args) { // TODO Auto-generated method stub Map map = new HashMap(); map.put("object1", 1); map.put("object2", 2); map.put("object3", 3); map.forEach((k,v)->{ System.out.println(k+"->"+v); }); } } 七、Collections工具类的使用 package 集合; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class List7 { public static void main(String[] args) { // TODO Auto-generated method stub Collection number = new ArrayList(); //给集合批量添加元素 /** * 参数一:被添加元素的集合 * 参数二:要添加的元素 */ Collections.addAll(number, 1,2,3); System.out.println(number); //打乱集合的顺序 List newNumber = new ArrayList(); Collections.addAll(newNumber, 1,2,3); Collections.shuffle(newNumber); System.out.println(newNumber); } } 八、可变参数

可变参数的格式:数据类型...参数名称

可变参数的作用:

传输参数非常灵活。

可以不传参数。

可以传输一个参数。

可以传输多个参数。

可以传输一个数组。

可变参数在方法内部本质上就是一个数组。

package 集合; import java.util.Arrays; public class List8 { public static void main(String[] args) { // TODO Auto-generated method stub sum();//不传参数 sum(1);//一个参数 sum(1,2,3);//多个参数 sum(new int[] {1,2,3});//一个数组 } public static void sum(int...num) { //长度 System.out.println(num.length); //内容 System.out.println(Arrays.toString(num)); } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有