java list相关知识
-
Java List1、List 是接口,实现子类是:ArrayList 2、集合+泛型 3、add 方法,参数可以是,基本数据类型,也可以是类的实例对象 4、addAll 5、size 集合长度 6、get 根据索引获取集合中的元素 7、remove 根据索引删除集合中的元素 8、set 修改 9、iterator 方法 10、Iterator 接口 hasNext方法 next 方法 11、集合循环三种方式 public class Course { private String id; private String name; public Course() { } public Course(String id, String name) { t
-
Java List结构+Iterator方法使用遍历list对象,既可以使用拆包的方法(又分为手动拆包和自动拆包),这次慕课上的老师又教了一个新的方法——迭代器。我又搜集了一些资料,结合自己的代码做一些补充,毕竟慕课都是以基础为主,想要深入就只能靠自己了 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个I
-
Java--------集合Map,List,Set集合是java中提供的一种类型 ,用于存储管理对象 为什么不用数组?数组难于扩充,不好进行插入和删除 java三大集合框架:List Set Map List(序列):有顺序可重复,动态扩充 Set(集合):无序不可重复,动态扩充 Map(键值对):键值对 key value,键不可重复 List: boolean add(E e); boolean isEmpty(); //判断序列是否为空 boolean remove(Object o)
-
Java 中初始化 List 集合的 6 种方式!List 是 Java 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下。1、常规方式List<String> languages = new ArrayList<>();languages.add("Java");languages.add("PHP");languages.add("Python");System.out.println(languages);这种就是我们平常用的最多最平常的方式了,没什么好说的,后面缺失的泛型类型在 JDK 7 之后就可以不用写具体的类型了,改进后会自动推断类型。2、Arrays 工具类List<String> jdks = asList("JDK6", "JDK8", "JDK10");System.out.println(jdks);注意,上面的 asList 是 Arrays 的静态方法,这里使用了静态导入。这种方式添加的是不可变的 List, 即不能添加、
java list相关课程
java list相关教程
- 7.1 列表(List) 列表的定义跟 Java 差不多,但是较 Java 中比较简单。我们从代码中来比较:class Example { static void main(String[] args) { // Java的定义方式 def list = new ArrayList() //定义一个空的列表//groovy中定义 def list2 = [] //定义一个空的列表 def list3 = [1,2,3,4] //定义一个非空的列表 println list2.class println list3.class };}--------------输出----------------class java.util.ArrayListclass java.util.ArrayList----------------------------------我们从上面看到,这样定义完是跟 Java 一样的都是ArrayList。下面我们再看下在 Groovy 中定义数组://在groovy中使用as关键字定义数组def array = [1,2,3,4] as int[]//或者使用强类型的定义方式int[] array2 = [1,2,3]Tips: 在 Groovy 中定义数组的方式有两周,一种是跟 Java 一样直接指定 int,一种是用as关键字,但是我们使用时要注意和 List 的区别。
- 2.1 list说明 list是一个数组列表,里面存放着我们需要调试的页面对象,我们将想要调试的页面都放在 list 数组列表中。想要调试哪个页面,就将这个页面对象所对应的的 list 索引写在 current 属性的后面、这样我们调试的时候,就会将这个页面作为项目的启动页面了。比如 "current": 1,current 属性后面跟着 1,也就是 list 数组列表中索引为 1 的页面对象,我们调试的时候,list 数组中的第 2 个页面对象就会作为项目的初始启动页面。Tips:我们一般直接在 App 里真机调试运行,这样可以直接打开配置的页面,如果在微信开发者工具中调试需要手动改变编译模式。
- 3.1 pip3 list 命令 pip3 list 列出所有已经安装的包,示例如下:C:\> pip3 listcertifi (2020.4.5.1)chardet (3.0.4)idna (2.9)numpy (1.18.4)pip3 (9.0.1)pygame (1.9.4)requests (2.23.0)setuptools (28.8.0)urllib3 (1.25.9)pip3 list 输出了已经安装的包的名称和版本。
- 3.1 List (只读集合) 和 MutableList (可变集合) 集合初始化Tips: 在 Kotlin 中 List 只读集合初始化主要是通过 listOf<T> 函数,而 MutableList 可变集合初始化主要是通过 mutableListOf<T> 函数。List 初始化:fun listInit() { //通过listOf<T>(xx,xx,xx)方法初始化,带初始化元素的集合 val languages1: List<String> = listOf<String>("kotlin", "dart", "java", "swift") //List<String>可以不用声明,通过listOf<String>可以类型推导出具体类型 val languages2 = listOf<String>("kotlin", "dart", "java", "swift") //<String>泛型类型可以不用声明,通过集合内部元素初始化值的类型,可以推导出元素类型是String val languages3 = listOf("kotlin", "dart", "java", "swift") //通过listOf<T>函数初始化空集合 val emptyLanguages1: List<String> = listOf<String>() //<String>泛型类型可以不用声明,通过List<String>可以知道是泛型类型是String val emptyLanguages2: List<String> = listOf() //注意: 这是不合法的,因为无法推导出具体元素类型// val emptyLanguages3 = listOf() //空集合还可以通过emptyList<T>函数来实现,实际上通过源码发现listOf<T>(),最后都是委托调用emptyList<T>() val emptyLanguages4 = emptyList<String>()}MutableList 初始化:fun mutableListInit() { //通过mutableListOf<T>(xx,xx,xx)函数初始化,带初始化元素的集合 val languages1: MutableList<String> = mutableListOf<String>("kotlin", "dart", "java", "swift") //MutableList<String>可以不用声明,通过mutableListOf<String>可以类型推导出具体类型 val languages2 = mutableListOf<String>("kotlin", "dart", "java", "swift") //<String>泛型类型可以不用声明,通过集合内部元素初始化值的类型,可以推导出元素类型是String val languages3 = mutableListOf("kotlin", "dart", "java", "swift") //mutableListOf<T>函数初始化可变空集合 val emptyLanguages1: MutableList<String> = mutableListOf<String>() //<String>泛型类型可以不用声明,通过MutableList<String>可以知道是泛型类型是String val emptyLanguages2: MutableList<String> = mutableListOf() //注意: 这是不合法的,因为无法推导出具体元素类型// val emptyLanguages3 = mutableListOf() //可变空集合还可以通过ArrayList<T>函数来实现,实际上通过源码发现mutableListOf<T>(),最后都是委托调用ArrayList<T>() //而且ArrayList<T>实际上就是Java中的ArrayList<T>,只不过是Kotlin中取了一个别名而已,关于具体内容请参考这个类kotlin.collections.TypeAliasesKt实现 val emptyLanguages4: MutableList<String> = ArrayList<String>()}集合遍历Tips: List 和 MutableList 的遍历是一样的.List 遍历:fun main() { val languageList = listOf("kotlin", "dart", "java", "swift") //for-in for (language in languageList) { println(language) } //for-each languageList.forEach { println(it) } //for-in-indices for (index in languageList.indices) { println(languageList[index]) } //while-iterator val iterator = languageList.iterator() while (iterator.hasNext()) { println(iterator.next()) }}MutableList 遍历:fun main() { val languageList = mutableListOf("kotlin", "dart", "java", "swift") languageList.add("ruby") languageList.add("python") //for-in for (language in languageList) { println(language) } //for-each languageList.forEach { println(it) } //for-in-indices for (index in languageList.indices) { println(languageList[index]) } //while-iterator val iterator = languageList.iterator() while (iterator.hasNext()) { println(iterator.next()) }}
- 3.1 list说明 list是一个用来存放 tab 项的数组列表,将所有的 tab 项都放在 list 数组列表中。
- 2. list()和 iterate() 在前面的课程里,咱们一起讲解过 Query 对象,它提供了 list() 方法,此方法能接受 HQL 语句,查询出开发者所需要的数据。那么 list() 方法支持缓存吗?也就是说 list() 方法查询出来的数据会存储到缓存中吗?本节课程中的缓存都是指二级缓存。问题出来了,要找到答案很简单,编写一个实例,测试一下便知道结果 。创建 2 个 Session 对象,分别对同一个 HQL 语句进行查询:Session session = sessionFactory.openSession();Transaction transaction = null;try { transaction = session.beginTransaction(); String hql = "from Student s"; Query query = session.createQuery(hql); System.out.println("------------------第一次查询-------------------"); List<Student> stus = query.list(); System.out.println(stus.size()); transaction.commit(); } catch (Exception e) { transaction.rollback(); } finally { session.close(); } session = sessionFactory.openSession();transaction = null;try { transaction = session.beginTransaction(); String hql = "from Student s"; Query query = session.createQuery(hql); System.out.println("-----------------第二次查询--------------------"); List<Student> stus = query.list(); System.out.println(stus.size()); transaction.commit();} catch (Exception e) { transaction.rollback();} finally { session.close();}查看控制台上的输出结果:Hibernate: select student0_.stuId as stuId1_1_, student0_.classRoomId as classRoo5_1_, student0_.stuName as stuName2_1_, student0_.stuPassword as stuPassw3_1_, student0_.stuSex as stuSex4_1_ from Student student0_4-----------------第二次查询--------------------Hibernate: select student0_.stuId as stuId1_1_, student0_.classRoomId as classRoo5_1_, student0_.stuName as stuName2_1_, student0_.stuPassword as stuPassw3_1_, student0_.stuSex as stuSex4_1_ from Student student0_4从结果上可以看出,两次查询的 HQL 请求是相同的,但每一次都会重新发送 SQL 语句,是不是就得出结论,list() 方法与缓存无缘分呢?结论可不要提出来的太早。Query 还提供了一个方法 iterate(),从功能上做比较,和 list() 没有多大区别,只是一个返回的是集合对象,一个返回的是迭代器对象,作用是一样的。但是不是就没有其它的区别了?不急,先了解一下 iterate() 方法的特点,用实例来说话:Session session = sessionFactory.openSession();Transaction transaction = null;try { transaction = session.beginTransaction(); String hql = "from Student s"; Query query = session.createQuery(hql); System.out.println("------------------迭代查询-------------------"); Iterator<Student> stus = query.iterate(); while(stus.hasNext()) { Student stu= stus.next(); System.out.println("-------------------输出结果------------------"); System.out.println("学生姓名:"+stu.getStuName()); } transaction.commit(); } catch (Exception e) { transaction.rollback(); } finally { session.close(); }截取运行后的一部分控制台上的内容展示如下:------------------迭代查询-------------------Hibernate: select student0_.stuId as col_0_0_ from Student student0_-------------------输出结果------------------Hibernate: select student0_.stuId as stuId1_1_0_, student0_.classRoomId as classRoo5_1_0_, student0_.stuName as stuName2_1_0_, student0_.stuPassword as stuPassw3_1_0_, student0_.stuSex as stuSex4_1_0_ from Student student0_ where student0_.stuId=?学生姓名:Hibernate当我们执行 iterate() 方法时,Hibernate 只是把所有的学生编号(主键)返回给应用程序。也就是说并没有返回完整的学生信息。它为什么要这么做了?首先有一点是可以得出结论的,仅仅得到学生编号肯定比获取全部学生信息是要快很多的。当程序中需要学生其它数据的时候,这时 Hibernate 又会跑一次数据库,根据前面获取到的学生编号构建新的条件查询,从数据库中再次获取数据。天呀,真不闲累的慌。为什么要这么做了?这有点类似于延迟加载,很多时候,程序中并不急着使用数据,可能需要等某些依赖的逻辑成立后再使用。如此,iterate() 方法可快速获取主键值,并安慰开发者,你看,我是有能力帮你获取数据的。等需要更多时,我也是有能力拿到的。Query 既提供 list() 方法,又提供 iterate() 方法不是没有出发点的。这两个方法很多时候结合起来使用,可以达到一种神奇的效果。什么效果呢?看一段实例:Session session = sessionFactory.openSession();Transaction transaction = null;try { transaction = session.beginTransaction(); String hql = "from Student s"; Query query = session.createQuery(hql); System.out.println("------------------第一次使用 list()方法查询-------------------"); List<Student> stus = query.list(); System.out.println(stus.size()); transaction.commit();} catch (Exception e) { transaction.rollback();} finally { session.close();}session = sessionFactory.openSession();transaction = null;try { transaction = session.beginTransaction(); String hql = "from Student s"; Query query = session.createQuery(hql); System.out.println("-----------------第二次使用iterate()方法查询--------------------"); Iterator<Student> stus = query.iterate(); while (stus.hasNext()) { Student stu = stus.next(); System.out.println("-------------------输出结果------------------"); System.out.println("学生姓名:" + stu.getStuName()); } transaction.commit();} catch (Exception e) { transaction.rollback();} finally { session.close();}两者结合,交织中所碰触出的火花,你 get 到了吗?先使用 list() 方法查询出所有学生信息, hibernate 会把 list() 方法查询出来的数据全部存储到缓存中。但是,它自己不使用缓存中自己缓存的数据,它是勤劳的小蜜蜂,无私的奉献。谁会使用 list() 缓存的数据了?输出结果已经告诉了我们答案,iterate() 方法会使用 list() 方法缓存的数据。对于一条查询语句,Iterator 会先从数据库中找到所有符合条件的记录的主键 ID,再通过主键 ID 去缓存找,对于缓存中没有的记录,再构造语句从数据中查出,在缓存中没有命中的话,效率很低。那么,怎么联合使用了?建议在应用程序启动或修改时使用 list,通过 list 缓存数据。需要更多数据时再使用 iterator。好兄弟,一辈子,江湖上,有你也有我。
java list相关搜索
-
j2ee
j2ee是什么
jar格式
java
java api
java applet
java c
java jdk
java list
java map
java script
java se
java socket
java swing
java switch
java web
java xml
java 程序设计
java 多线程
java 环境变量