容器深入研究

17.1 完整的容器分类法

17.2 填充容器

package net.javabcsx.com.char17;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by Administrator on 2016/4/14.
 */

class StringAddress{
    private String s;
    public StringAddress(String s) {
        this.s = s;
    }

    @Override
    public String toString() {
        return super.toString() + " " + s;
    }
}

public class FillingLists {
    public static void main(String[] args) {
        List<StringAddress> list = new ArrayList<StringAddress>(
                //nCopies将对象拷贝4遍
                Collections.nCopies(4, new StringAddress("Hello")));
        System.out.println(list);
        //复制同一个对象替换容器
        Collections.fill(list, new StringAddress("World"));
        System.out.println(list);
    }
}

一种Generator解决方案

时间: 2024-08-04 01:46:13

容器深入研究的相关文章

容器深入研究 --- 散列与散列码(三)

如何覆盖hashCode(): 明白了如何散列之后,编写自己的hashCode()就更有意义了. 首先,你无法控制bucket数组的下标值的产生.这个值依赖于具体的HashMap对象的容量,而容量的改变与容器的充满程度和负载因子有关.hashCode()生成的结果,经过处理后称为桶位的下标. 设计hashCode()时最重要的因素就是:无论何时,对同一个对象调用hashCode()都应该产生同样的值.如果在将一个对象用put()添加进HashMap时产生一个hashCode()值,而用get()

容器深入研究 --- 散列与散列码(一)

通常的: 当标准类库中的类被作用HashMap的键.它用的很好,因为它具备了键所需的全部性质. 当你自己创建用作HashMap的键的类,有可能会忘记在其中放置必须的方法,而这时通常会犯的一个错误. 例如:考虑一个天气系统,将Groundhog对象与Prediction对象联系起来. class Groundhog { protected int number; public Groundhog(int n) { number = n; } public String toString() { r

容器深入研究 --- 散列与散列码(二)

为速度而散列: SlowMap.java说明了创建一个新的Map并不困难.但正如它的名称SlowMap所示,它不会很快,如果有更好的选择就应该放弃它.它的问题在于对键的查询,键没有按照任何特定的顺序保存,所以只能使用简单的线性查询,而线性查询是最慢的查询方式. 散列的价值在于速度: 散列使得查询得以快速进行.由于瓶颈在于键的查询速度,因此解决方案之一就是保持键的排序状态,然后使用Collections.binarySearch()进行查询. 散列则更进一步,它将键保存在某处,以便能够很快的找到.

容器深入研究 --- 理解Map

通常的: 映射表(也称关联数组)的基本思想是它维护的键-值(对)关联,因此你可以使用键来查找值. 标准的Java类库中包含了Map的几种实现,包括:HashMap,TreeMap,LinkedHashMap,WeakHashMap,ConcurrentHashMap,IdentityHashMap. 它们都有同样的基本接口Map,但是行为特性各不相同,这表现在效率.键值对的保存及呈现次序.对象的保存周期.映射表如何在多线程程序中工作的判定"键"等价的策略方面.Map接口实现的数量应该让

容器的研究思路

容器的研究思路 为什么研究容器 容器是JDK里的基础功能,平时使用得较多. 容器相对简单,比较容易研究 已经有很多人对容器进行了研究,相关资料比较齐全 容器是什么,要研究那些特性 容器是一段程序,是一系列的对象. 作为程序,它由 数据结构+算法构成 作为对象,它由 属性+方法构成 作为类,它有自己的继承树 容器有很多的工具类,如collections.Arrays.Iterator等等 怎么去研究容器 评价软件的4个因素:可维护性,可靠性,移植性,效率 如何去测试评估程序的特性 程序的并发性能

Thinking in Java:容器深入研究

1.虚线框表示Abstract类,图中大量的类的名字都是以Abstract开头的,它们仅仅是部分实现了特定接口的工具,因此创建时能够选择从Abstract继承. Collections中的实用方法:挑几个经常使用的: 1. reverse(List):逆转次序 2. rotate(List,int distance)全部元素向后移动distance个位置,将末尾元素循环到前面来(用了三次reverse) 3.sort(List,Comparator) 排序,可依照自己的Comparator 4.

容器深入研究 --- Set和存储顺序

常见的: 我们在Set中很方便的使用了诸如Integer和String这样的Java预定义类型,这些类型被设计为可以在容器内部使用. 当你创建自己的类型时,要意识到Set需要一种方式来维护存储顺序,而存储顺序如何维护,则是在Set的不同实现之间会有所变化.因此,不同的Set实现不仅具有不同的行为,而且它们对于可以在特定的Set中放置的元素的类型也有不同的要求: * ------------------------------------------------------------------

Java编程思想——第17章 容器深入研究(two)

六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add 在尾部增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementExce

Think in Java(十四):容器深入研究

1.HashSet为快速查找而设计的Set TreeSet底层为树结构,必须要实现Comparable接口,存入的元素会按照compareTo方法中的规则排序 LinkedHashSet内部使用链表维护元素的插入次序. 2.HashMap使用对象的hashCode()进行快速查询的,此方法能够显著提高性能. LinkedHashMap使用链表维护内部次序(插入次序) TreeMap基于红黑树的实现,结果经过排序(顺序由comparable决定) ConcurrentHashMap一种线程安全的M