java基础第十五天 集合
来源:互联网 发布:linux安装网站安全狗 编辑:程序博客网 时间:2024/06/09 19:21
1、TreeSet
TreeSet 是 SortedSet 接口的实现类.
特点:
元素唯一
排序
两种排序方法:
自然排序 比较的类需要实现接口compareable,并重写compareTo方法
比较器排序,也叫定制排序 自定义比较器实现comparator,并重写comapre方法
升序:需要在compareTo和comapre方法里面,使用前者的属性和后者的属性相比较:倒叙:需要在compareTo和comapre方法里面,使用后者的属性和前者的属性相比较:
注意:
1、如果试图把一个对象添加到 TreeSet 时,则该对象的类必须实现 Comparable 接口。2、TreeSet是用compareTo()来判断重复元素的,而非equals()
2、Map
特点
1、map存储的数据有两列,叫键值对 2、Map 中的 key 用Set来存放,不允许重复,value使用Collection存放 3、key 和 value 之间存在单向一对一关系
常用实现类:
HashMap LinkedHashMap(了解) TreeMap HashTable(了解) Properties
常用方法
添加、删除操作:
Object put(Object key,Object value) 将指定的值与此映射中的指定键关联(可选操作)。Object remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除void putAll(Map t) 从指定映射中将所有映射关系复制到此映射中void clear() 从此映射中移除所有映射关系
元素查询的操作:
Object get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。int size() 如果此映射将一个或多个键映射到指定值,则返回 true。boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。boolean equals(Object obj) 比较指定的对象与此映射是否相等。最常用get和size方法,其他都较少使用
元视图操作的方法:
Set keySet() 返回此映射中包含的映射关系的 Set 视图Collection values()Set entrySet()keyset和entryset是需要掌握的//必须掌握map的遍历方法Map<String, String> map = new HashMap<String,String>();map.put("郭靖", "黄蓉");map.put("杨康", "穆念慈");map.put("杨过", "小龙女");//通过keyset可以取出所有的key到Set对象Set<String> set = map.keySet();for (Object object : set) { System.out.println(object+" "+ map.get(object));}System.out.println();//通过entrySet来获取map的key和valueSet<Map.Entry<String,String>> set1 = map.entrySet();for (Entry<String, String> entry : set1) { String key = entry.getKey(); String value = entry.getValue(); System.out.println(key+" "+ value); }System.out.println();//把所有的value返回到一个Collection里Collection<String> c1 = map.values();for (String string : c1) { System.out.println(string);}
2.1 HashMap
HashMap是 Map 接口使用频率最高的实现类
允许使用null键和null值
HashMap 判断两个 key 相等的标准:equals() 和hashCode
2.2 LinkedHashMap(了解)
特点:有序(有链表保证)
2.3 TreeMap
TreeMap:可以保证所有的 Key-Value 对处于有序状态。
自然排序: 排序的类实现Comparable,然后需要实现compateTo方法定制排序: 自定义比较器类实现个 Comparator判断key相等的标准:两个key通过compareTo()方法或者compare()方法返回0
注意:
若使用自定义类作为TreeMap的key,所属类需要重写equals()和hashCode()方法,且equals()方法返回true时,compareTo()方法应返回0。
2.4 HashTable(了解)
1、Hashtable线程安全。2、Hashtable 不允许使用 null 3、无序 4、判断key是否相等与hashMap一致
2.5 Properties
Properties: 是 Hashtable 的子类,该对象用于处理属性文件
常用方法:
setProperty(String key,String value)String getProperty(String key)//读取配置文件Properties properties = new Properties();//把config.properties文件加载到内存中的pros对象中properties.load(new FileInputStream("G:\\workspace\\javabase\\src\\day15\\map\\config.properties"));String driverClassName = properties.getProperty("driverClassName");String userName = properties.getProperty("userName");String password = properties.getProperty("password");String url = properties.getProperty("url");System.out.println(driverClassName);System.out.println(userName);System.out.println(password);System.out.println(url);
3、Collections
Collections是集合的工具类,类似数组的工具类Arrays
3.1 sort(list, Comparator)
//通过sort(List,Comparator)对map的value进行排序Set<Map.Entry<String, Integer>> set = map.entrySet();List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(set);Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){ @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o1.getValue()-o2.getValue(); }});
3.2 同步控制
Collections 类中提供了多个 synchronizedXxx() 方法,该方法可使将指定集合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题
4、集合嵌套
//经典案例之list包含map,map再包含list List<Map<String,List<Student>>> list = new ArrayList<Map<String,List<Student>>>(); //现在有两个Map,分别是javaEEMap和h5Map //javaee班有个班级 //h5有1个班级 Map<String, List<Student>> javaEEMap = new HashMap<String, List<Student>>(); List<Student> l1 = new ArrayList<Student>(); l1.add(new Student("张三1",21)); l1.add(new Student("张三2",22)); l1.add(new Student("张三3",23)); l1.add(new Student("张三4",24)); javaEEMap.put("java01班", l1); List<Student> l2 = new ArrayList<Student>(); l2.add(new Student("李四1",21)); l2.add(new Student("李四2",22)); l2.add(new Student("李四3",23)); l2.add(new Student("李四4",24)); javaEEMap.put("java02班", l2); Map<String, List<Student>> h5Map = new HashMap<String, List<Student>>(); List<Student> l3 = new ArrayList<Student>(); l3.add(new Student("王五1",21)); l3.add(new Student("王五1",21)); l3.add(new Student("王五1",21)); l3.add(new Student("王五1",21)); h5Map.put("h5班", l3); //把map放到总的List里面 list.add(javaEEMap); list.add(h5Map); for (Map<String,List<Student>> map : list) { for (String key : map.keySet()) { //得到map的value,是个list List<Student> values = map.get(key); for (Student student : values) { System.out.println(key +"+"+ student); } } }
阅读全文
0 0
- java基础第十五天 集合
- 黑马程序员--Java基础学习(集合框架)第十五天
- java第十五天_Map集合,
- Day15第十五天 java基础 -------JAVA类集
- 传智博客JAVA基础第十五天
- Java基础第十五天--Exception异常
- No_16_0310 Java基础学习第十五天
- 第十五天:集合二
- C#基础第十五天
- Java第十五天
- JAVA学习第十五天
- Java学习第十五天
- 梦入IBM之java基础第十五天
- Java基础第十五天学习日记_TreeSet、泛型
- java第十五天-总结1
- 黑马程序员-第十五天( Set集合)
- 第十五天:集合(1)Collection
- Java基础第十一天--Collection集合
- MyBatis集成log4j
- oracle 学习笔记
- xv6进程调度代码
- 北京大学并非净土,北大方正便是明证
- SpringMVC注解
- java基础第十五天 集合
- java数据类型
- 数模培训记录
- SpringMVC 第二种 方式例子
- Spring和MyBatis的整合的查询小案例
- SpringMVC 解析器
- SpringMVC 内外部视图
- Python基础07 函数
- Javascript—if...else语句