Java 中集合框架知识点的总结

在Java的学习中最早接触的保存批量数据的是数组,但是数组有一个缺陷是保存的数据的个数必须在创建数组的时候就确定下来。Java为我们提供给了更好的保存数据的方式就是使用集合框架,在这里介绍List,Set 和Map三种,我说点这三者之间的关系,这三者都是Collection接口的子接口,三种的区别主要是在内存中保存数据的数据结构不同,在下面的例子中会分别详细的进行叙述。

首先我们看看List,List保存数据使用的是数组进行保存的,因此保存的数据之间可以重复,分别有三个子类在我们的开发中使用的比较多 ArrayList,LinkedList,Vector,其中ArrayList 和Vector使用的都是数组结构进行数据保存的,区别在意ArrayList 是不线程安全的,而Vector 是线程安全的。LinkedList是使用链表进行数据的保存的。Vector 现在使用的比较少,因为为了线程的安全,我们完全可以自己加锁,或者使用Collections 提供的方法为我们的ArrayList 和LinkedList 进行加锁。API 中提供了使用这些的具体方法,都算比较简单,我们需要特别注意的是数据取出的API,我们可以使用 get(int index),也可以使用迭代器取出数据。下面我们看个很简单的例子代码:

// 我们创建一个 ArrayList 对象,并给其中添加数据ArrayList arrayList = new ArrayList<>();arrayList.add("test1");arrayList.add("test2");arrayList.add("test3");arrayList.add("test4");// 取出数据的方式有二种// 第一种,由于在底层使用数组进行数据的保存,所以我们可以 使用  get(int index) 进行获取String test01_string = (String)arrayList.get(0);System.out.println(test01_string);String test02_string = (String)arrayList.get(1);System.out.println(test02_string);//第二种,我们可以使用IteratorIterator iterator = arrayList.iterator();while(iterator.hasNext()){  System.out.println(iterator.next());}// 需要特别注意的使用如果我们在使用迭代器的时候,使用数组的方法修改数据,//会出现并发修改的异常,比如下面的代码Iterator iterator_02 = arrayList.iterator();while(iterator_02.hasNext()){if(iterator_02.next().equals("test1")){arrayList.add("test5");}}// 运行的时候报错 java.util.ConcurrentModificationException// 为什么会出现这样的问题那,这是因为 我们在使用迭代器的时候,使用了数组的方法去修改arrayList// 中的元素,我们在操作arrayList 中的数据的时候,要么使用数组的方法,要么使用迭代器的方法// 对于List Java 为我们提供了一种特殊的迭代器,listIterator,里面都有更多的方法提供给我们// 比如 add(E e),set(E e) 等等方法,具体使用的时候,你可以自己查看API选择合适的方法,下面// 举个例子,还是上面的代码,我们做点修改ListIterator iterator_03 = arrayList.listIterator();while(iterator_03.hasNext()){if(iterator_03.next().equals(


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部