java集合
来源:互联网 发布:消防工程师题库软件 编辑:程序博客网 时间:2024/05/17 07:47
一、集合与数组的关系
数组是大小固定的,并且同一个数组只能存放类型一样的数据,基本类型或者是引用类型,而java集合可以存储和操作数目不固定的一组数据,所有的java集合都位于java.util包中,java 集合只能存放引用类型的数据,不能存放基本数据类型。
二、集合框架包含的内容
接口:Collection、Map
关系图
Collection接口的特点:存储一组不唯一、无序的对象;
List接口:存储一组不唯一、有序的对象;
Set接口:存储一组唯一、无序的对象;
ArrayList与LinkedList:
用法基本相同,LinkedList比ArrayList多了一对first和last属性,用于add、get和remove。如果是查询多用ArrayList,增加和删除多用LinkedList。
//创建企鹅信息 Penguins penguins0=new Penguins("小白","男"); Penguins penguins1=new Penguins("美美","男"); Penguins penguins2=new Penguins("小北","男"); Penguins penguins3=new Penguins("小白","男"); ArrayList<Penguins> penguins=new ArrayList<>(); penguins.add(penguins0); penguins.add(penguins1); penguins.add(penguins2); penguins.add(penguins3); System.out.println("共有"+penguins.size()+"只企鹅"); for (Penguins penguins4:penguins) { System.out.println(penguins4.getName()+" "+penguins4.getSex()); } //删除 penguins.remove(penguins0); System.out.println("删除后还有"+penguins.size()+"只企鹅"); System.out.println("分别是"); for (Penguins penguins4:penguins) { System.out.println(penguins4.getName()+" "+penguins4.getSex()); } //是否包含 if (penguins.contains(penguins2)) { System.out.println("集合中包含"); }
HashSet和treeSet
与list的用法基本相似,只是不能重复添加对象,且没有下标值。如果属性相同,对象名不同,仍能添加并显示信息。
TreeSet可以给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口。
使用TreeSet时,类中要有Comparable接口;
例如
测试类public static void main(String[] args) { // TODO Auto-generated method stub Student stu1=new Student(11,"金时"); Student stu2=new Student(10,"银时"); Student stu3=new Student(13,"神乐"); Student stu4=new Student(16,"新八"); Set<Student> students=new TreeSet<>(); students.add(stu1); students.add(stu2); students.add(stu3); System.out.println("共有"+students.size()+"个同学"); for (Student student : students) { System.out.println(student.getStudentNo()+" "+student.getName()); } if (students.contains(stu2)) { students.remove(stu2); } System.out.println("共有"+students.size()+"个同学"); for (Student student : students) { System.out.println(student.getStudentNo()+" "+student.getName()); } if (students.contains(stu3)) { System.out.println(stu3.getName()); } }
Map接口
HashMap特点:
通常存入的是一对数据,Map<k,v>
,K就是你指定的关键词,通过key值就能找到value。
HashMap不可重复添加对象,无下标值,且key值是唯一不可重复的。
HashMap比ArrayList更方便查找。
Map接口常用的方法
例如:
Student stu1=new Student(11,"金时"); Student stu2=new Student(10,"银时"); Student stu3=new Student(13,"神乐"); Student stu4=new Student(16,"新八"); //创建泛型集合 Map<Integer, Student> stus=new HashMap<>(); //增加信息 stus.put(stu1.getStudentNo(), stu1); stus.put(stu2.getStudentNo(), stu2); stus.put(stu3.getStudentNo(), stu3); stus.put(stu4.getStudentNo(), stu4); System.out.println("共有"+stus.size()+"位同学"); //获取 Student student=stus.get(10); System.out.println(student.getStudentNo()+" "+student.getName()); //删除 stus.remove(13); System.out.println("共有"+stus.size()+"位同学"); if (stus.containsKey(16)) { System.out.println(stus.get(16).getName()); }
Map中的循环
1.增强for循环
遍历所有的key值
//获取map 里的key值 Set<Integer> keys=stus.keySet(); for (Integer key : keys) { System.out.println(key); System.out.println(stus.get(key).getName()); }
遍历所有的value值
//获取map里所有value值 Collection<Student> values=stus.values(); for (Student stud : values) { System.out.println(stud.getStudentNo()+" "+stud.getName()); }
2.迭代器Iterator实现循环
//获取map 里的key值 Set<Integer> keys=stus.keySet(); Iterator<Integer> it=keys.iterator(); while (it.hasNext()) { Integer key=it.next(); System.out.println(key); }
//获取map里所有value值Collection<Student> values=stus.values(); Iterator<Student> its=values.iterator(); while(its.hasNext()){ Student student1=its.next(); System.out.println(student1.getStudentNo()+" "+student1.getName()); }
集合类的对比
- Java集合:集合框架
- java集合---set集合
- JAVA 集合 的 集合
- 【集合】Java集合对比
- JAVA集合-Map集合
- JAVA集合-Set集合
- JAVA集合-List集合
- java集合------Map集合
- Java集合----List集合
- Java集合----Set集合
- Java集合----Map集合
- JAVA集合
- JAVA集合
- Java集合
- JAVA集合
- Java集合
- Java集合
- java 集合
- hdoj 1711 Number Sequence
- *排列成三角形
- 数据存储之XMl文件
- nginx访问日志和错误日志
- Codeforces Round #418 (Div. 2)
- java集合
- spring_demo7_springmvc
- 图像处理之二值化图像
- Java设计模式(三)——建造者模式
- 表示数字
- 06章总结
- 安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world
- Webpack打包原理
- 蛇形填数