Thinking in java-31 容器-container
2017-06-27 10:38
253 查看
1. 容器
引入容器:一些简单的程序而言,有一些固定数量的对象、且这些对象有已知的生命周期就足够了。Java中有多种方式存储对象(或者换种说法,存储对象的引用)。数组array是编译器支持的数据类型,如果要存储一组基本数据类型对象,数组是一个极好的选择;对于存储一组对象而言数组也是很有效率的。
数组的局限性在于它是固定大小的,这个特点是致命的,因为绝大部分我们并不知道运行时需要有多少对象,所以容器大小无法改变这个特点有时太过于局限化。
容器分类:
1). Collection;是一组单独的元素,有多个规则适用于这组容器。可以看作是key为int map。
2). Map:是一组key-value键值对对象,允许我们通过key查询value。
2. Comparable & Comparator 接口
package com.fqy.blog; import java.util.ArrayList; import java.util.Collections; class Person implements Comparable { private int height; public Person(int height) { this.height = height; } @Override public String toString() { return "Height is: " + height; } @Override public int compareTo(Object o) { Person p = (Person) o; return (this.height - p.height > 0) ? 1 : (this.height - p.height == 0 ? 0 : -1); } } public class ComparableDemo { public static void main(String[] args) { ArrayList<Person> list = new ArrayList<>(); list.add(new Person(165)); list.add(new Person(172)); list.add(new Person(162)); list.add(new Person(181)); list.add(new Person(159)); System.out.println(list); Collections.sort(list); System.out.println(list); Collections.sort(list, Collections.reverseOrder()); System.out.println(list); } } //Running result: [Height is: 165, Height is: 172, Height is: 162, Height is: 181, Height is: 159] [Height is: 159, Height is: 162, Height is: 165, Height is: 172, Height is: 181] [Height is: 181, Height is: 172, Height is: 165, Height is: 162, Height is: 159]
Comparator Interface:
package com.fqy.blog; import java.util.Arrays; import java.util.Comparator; import java.util.Random; class AbsComparator implements Comparator<Object> { @Override public int compare(Object o1, Object o2) { int val1 = Math.abs(((Integer) o1).intValue()); int val2 = Math.abs(((Integer) o2).intValue()); return (val1 - val2) > 0 ? 1 : (val1 - val2 == 0 ? 0 : -1); } } public class ComparatorDemo { public static void main(String[] args) { Random random = new Random(); Integer[] arr = new Integer[10]; for (int i = 0; i < arr.length; i++) arr[i] = random.nextInt(100) * (random.nextBoolean() ? 1 : -1); System.out.println("The original array is: "); for (int val : arr) System.out.print(val + " "); System.out.println(); System.out.println("Use built-in method to sort: "); Arrays.sort(arr); for (int val : arr) System.out.print(val + " "); System.out.println(); Arrays.sort(arr, new AbsComparator()); // Collections.sort(Arrays.asList(arr), new AbsComparator()); Arrays.sort(arr, new AbsComparator()); System.out.println("Use altered method to sort: "); for (int val : arr) System.out.print(val + " "); System.out.println(); } } //Running result: The original array is: 68 32 -21 36 -45 50 82 59 71 -73 Use built-in method to sort: -73 -45 -21 32 36 50 59 68 71 82 Use altered method to sort: -21 32 36 -45 50 59 68 71 -73 82
相关文章推荐
- 《Thinking in Java》十七章_容器深入研究_练习12(Page484)
- 再读thinking in java -- 第十七章 容器深入研究(一)
- 《Thinking in Java》十七章_容器深入研究_练习12(Page484)
- 《Thinkinginjava》第17章-容器深入研究
- 《Thinking in Java》十七章_容器深入研究_练习13(Page484)
- 再读thinking in java -- 第十七章 容器深入研究(二)
- 《Thinking in Java》十七章_容器深入研究_练习13(Page484)
- Reading "Thinking in Java" #5
- java 线程[摘抄至《Thinking in Java》]
- Thinking in java Chapter 1 笔记
- 【Notes】《Thinking in Java》【Chapter 11】
- Thinking in Java学习笔记(三)(zt)
- Thinking in Java 读书笔记 —— 1.Introducation to Object
- 《thinking in java》学习手记(四)
- 《Thinking in Java》读书笔记(一)
- Thinking in Java 读书笔记 —— 1.Introducation to Object
- thinking in java 第三版 学习笔记(第2章 一切都是对象)
- 《Thinking in Java》读书笔记