首页 / JAVA / 黑马程序员_java的集合框架
黑马程序员_java的集合框架
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了黑马程序员_java的集合框架,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3935字,纯文字阅读大概需要6分钟。
内容图文
![黑马程序员_java的集合框架](/upload/InfoBanner/zyjiaocheng/1172/94d54c2cad654b6a9c9144e7c80586ea.jpg)
java类集的整个体系的组成和关系,以及各个接口,类的文字说明:
集合框架的特征:高性能,对动态数组,链接表,树和散列表的实现是高性能,允许不同类型的类集以相同的方式工作.它不受对象数组长度的限制
Collection:
-|:List 里面的内容是有序的(存入和取出的顺序一致),允许重复的内容,有索引,它扩充了Collection接口,拥有更多的方法
|:LinkedList 内部是链表数据结构,增删的速度快,也是不同步的
-|:Set 不能存放重复的内容,是无序的,
|:TreeSet 不能存放重复的元素,输出的数据是有序的
package cn.wjd.ArrayList; import java.util.ArrayList; import java.util.Iterator; import cn.wjd.bean.Person; public class ArrayListTest { public static void main(String[] args) { ArrayList a1 = new ArrayList(); a1.add(new Person("zhangsan1",21));//存自定义对象的时候,需要强转 a1.add(new Person("zhangsan2",22)); a1.add(new Person("zhangsan3",23)); a1.add(new Person("zhangsan4",24)); Iterator it = a1.iterator(); while (it.hasNext()) { // System.out.println(((Person) it.next()).getName()); 这段代码具有局限性,在循环中,一个对象调用2次方法,会出现异常 Person p = (Person) it.next();//解决方法,得到一个对象,然后使用对象进行调用方法 System.out.println(p.getName() +"-->" + p.getAge()); } } }
以上ArrayList代码中,两个注意点,我这边在ArrayList的容器中,加入的是自定义的对象,所以在输出数据的时候,一定要进行强制转换,强转得到对象,输出对象内容,这两个步骤一定要分开走,否则假如是一步走的话在while循环的输出会出现异常.
由以上代码,引出集合的标准输出的方法,Iterator(迭代输出,使用最多的输出方式)和ListIterator(专门用于输出List中的内容).
在ArrayList的集合中去掉重复的元素,同理还有另外一个需求,去掉一个数组中重复的元素,请看下面的代码
去掉集合中的重复元素
package cn.arraylist; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class ArrayList02 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("c"); List<String> li = getSingleElement(list); System.out.println(li); } publicstatic List<String> getSingleElement(List<String> list) { ArrayList<String> temp = new ArrayList<String>(); ListIterator<String> it = list.listIterator(); while(it.hasNext()){ String str = it.next(); if(!temp.contains(str)) temp.add(str); } return temp; } }
去掉数组中的重复元素
package cn.demo; import java.util.ArrayList; import java.util.List; // 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8} public class Demo2 { public static void main(String[] args) { int[] arr = {4,2,4,6,1,2,4,7,8}; List<Integer> list = new ArrayList<Integer>(); for(int i : arr){ if(!list.contains(i)) list.add(i); } System.out.print(list);
其实上面两段代码,使用到的思路是一样的,给定一个集合或者数组的时候,我们要改变它的长度,这个肯定是要考虑到用集合去解决的,因为数据的长度是不可以改变的,所以都得定义一个集合变量,来存储最后不重复的元素.
在去掉数组中重复元素的话,还有一个更加牛逼的方法,先将数组遍历装到ArrayList集合中(就算是int型的数组,它会自动变成Integer),然后把ArrayList这个数组中的元素全部添加到HashSet集合中去,由于HashSet的特点,所以直接去掉了重复元素,不过最后打印的数据的排列顺序会有点变化.你懂的.
package cn.demo; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Set; // 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8} public class Demo01 { public static void main(String[] args) { int[] arr = {4,2,4,6,1,2,4,7,8}; List<Integer> al = new ArrayList<Integer>(); for(int i : arr){ al.add(i); } Set<Integer> set = new HashSet<Integer>(); set.addAll(al); System.out.println(set); } }
迭代输出:Iterator(迭代含义:一个个对集合中的内容进行判断,有内容就将其取出)
最标准的做法,只要碰到集合输出,一定要想到这个接口.标准输出代码如下:
Iterator it = col.iterator(); //Collection中的方法,返回Iterator对象while(it.hasNext()){ //Iterator对象进行迭代判断,是否有下一个值 System.out.println(it.next());// 挨个取出当前元素 }
双向迭代输出:ListIterator(List专用的,只能通过List接口实例化,只能输出List接口中的内容)
package cn.wjd.List; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class ListDemo02 { public static void main(String[] args) { List list = new ArrayList(); //show(list); list.add("abc1"); list.add("abc2"); list.add("abc3"); System.out.println("原来的>" + obj); } System.out.println("列表迭代器迭代之后的>" + obj); }
内容总结
以上是互联网集市为您收集整理的黑马程序员_java的集合框架全部内容,希望文章能够帮你解决黑马程序员_java的集合框架所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。