`

关于Collection的各种子类

    博客分类:
  • java
阅读更多

java集合框架支持三种主要类型的集合:规则集(Set),线性集(List)和队列(Queue)。Set的实例用于存储不重复的元素,List的实例用于存储一个有元素构成的有序集合,Queue的实例用于存储先进先出方式处理的对象。

 

Set具体类是:散列类HashSet,链式散列类LinkedHashSet,树形集TreeSet。HashSet的默认初始容量16而客座率为0.75.

 

List 具体: ArrayList 和 LinkedList 具体区别就是 linkedList可以在任意位置插入删除等操作,而arraylist的好处就是效率高

 

谈一下规则集和线性表的效率性能。

 

import java.util.*;
public class SetListPerformanceTest
{
public static void main(String[] args)
{
Collection<Integer> set1 = new HashSet<Integer>();//HashSet
System.out.println("Time"+getTestTime(set1,5000)+"milliseconds");

Collection<Integer> set2 = new LinkedHashSet<Integer>();//LinkedHashSet
System.out.println("Time"+getTestTime(set2,5000)+"milliseconds");

Collection<Integer> set3 = new TreeSet<Integer>();//TreeSet
System.out.println("Time"+getTestTime(set3,5000)+"milliseconds");

Collection<Integer> set4 = new ArrayList<Integer>();//ArrayList
System.out.println("Time"+getTestTime(set4,5000)+"milliseconds");

Collection<Integer> set5 = new LinkedList<Integer>();//LinkedList
System.out.println("Time"+getTestTime(set5,5000)+"milliseconds");

}


public static long getTestTime(Collection<Integer> c,int size){
long startTime = System.currentTimeMillis();

//add numbers 1,2,3,......size-1 to the array list
List<Integer> list = new ArrayList<Integer>();
for(int i=0;i<size;i++){
list.add(i);
}

Collections.shuffle(list);//shuffle the array

for(int element : list)
c.add(element);

Collections.shuffle(list);

for(int element:list)
c.remove(element);

long endTime = System.currentTimeMillis();

return endTime-startTime;
}
}

 

通过上面的列子可以发现 规则集比线性表的效率高。但是还是要按照具体需求去选择。

 

 

ArrayList与vector 唯一不同的是访问和修改向量的同步方法。使用ArrayList效率比vector高。

stack是vector的子类、

 

队列(Queue)和优先队列(priorityQueue):队列是一种先进先出的数据结构。元素被追加在队尾,然后在队头被删除。

优先队列中 元素被赋予优先级。最高优先级的元素先被删除

linkedList 实现了Deque接口,Deque接口又拓展了Queue接口。 因此可以用LinkedList接口来创建一个队列。

 

 

 

 

图(Map):散列图(HashMap),链式散列图(LinkedHashMap)和树形图(TreeMap)

HashMap中条目的顺序是随机的。TreeMap的条目是按照升序排列的。LinkedHashMap中的条目是按元素最后一次呗访问的时间从早到晚排序的。

 

 

 

import java.util.*;
public class CountWordOfCurrent
{
public static void main(String[] args)
{
//set text in a string
String text = "Good moring. Have a good class."+"Have a good visit. Have fun!";

//create a treemap to hold words as key and count as value
TreeMap<String, Integer> map = new TreeMap<String, Integer>();

String[] words = text.split("[ \n\t\r.,;!:?(){]");
for(int i=0;i<words.length;i++){
String key = words[i].toLowerCase();
if(key.length()>0){
if(map.get(key) == null){
map.put(key,1);
}
else{
int value = map.get(key).intValue();
value++;
map.put(key,value);
}
}
}

//create all entries into a set
Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
//get key and value from each entry
for(Map.Entry<String,Integer> entry : entrySet){
System.out.println(entry.getValue()+"\t"+entry.getKey());
}
}
}

 

 

 

 

 

0
2
分享到:
评论

相关推荐

    集合框架包含collection和map的子类

    集合框架包含collection和map的子类。其中collection包含list、set和queue。map包括hashmap、hashtable和treemap

    gjinhui#book-2#如何表达出Collection及其子类1

    是一个泛型的接口继承了超级接口Iterable每个Collection的对象包含了一组对象所有的实现类都有两个构造方法,一个是无参构造方法,第二个是用另外一个C

    List Set Map以及子类的比较 .docx

    Collection 集合框架详解 Collection 集合框架是 Java 语言中最基础的集合类库,它提供了一些常用的数据结构和算法,使得开发者可以更加方便地进行数据存储和处理。Collection 集合框架的顶级接口是 Collection,...

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf

    Collection可以进一步分为List、Set、Queue等子类,每种子类都有其特点和使用场景。 2. Collection Collection是一个存储对象的集合,是Java集合框架的基类。Collection提供了多种方法来操作对象的集合,包括添加...

    Java容器框架 collection集合

    它进一步细分为以下几个子类: - **List**:按元素插入顺序保存元素,支持重复。 - **Set**:不允许有重复元素,维护唯一性。 - **Queue**:遵循先进先出(FIFO)原则管理数据。 - **Stack**:遵循后进先出...

    Collection.xmind

    个人学习总结,仅供参考。详细介绍集合中常用的方法并附带了相关代码,对Collection的子类:List(ArrayList、LinkedList)及Set(HashSet、TreeSet)进行了详细的介绍。

    Javacollection全集

    - **AbstractCollection**:它是Collection接口的一个抽象实现,提供了大部分方法的默认实现,子类可以通过覆盖部分方法来快速实现自己的集合类。 - **AbstractList**和**AbstractSet**:它们分别为List和Set接口...

    Collection的增删查改

    `LinkedHashSet`是`HashSet`的一个子类,它通过链接的方式维护了元素的插入顺序。 - **特点**:保持元素的插入顺序。 - **应用场景**:当需要保持元素顺序的同时还需要快速查找时使用。 **3. TreeSet实现** `...

    A Collection of Bit Programming Interview Questions solved in C++

    3. 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 4. 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 5. 单例模式:确保一个类只有一个实例,并提供一个全局...

    Java集合排序及java集合类详解(Collection、List、Map、Set

    `Collection`是Java集合框架的根接口,所有具体集合类都是它的子类。`Collection`提供了一组通用的方法来处理元素集合。 #### 1.2.1 常用方法 - `add(E e)`:向集合中添加一个元素。 - `remove(Object o)`:从集合...

    11.集合框架001-Collection接口10-12

    Stack是Vector的一个子类,实现了栈数据结构,遵循后进先出(LIFO)原则。Stack提供了一些基本的栈操作,如push()(入栈)、pop()(出栈)和peek()(查看栈顶元素但不移除)。Stack常用于处理临时存储和恢复状态的...

    Collection制作相片查看器

    标题中的“Collection制作相片查看器”指的是使用Java集合框架中的`Collection`接口或其子类,如`ArrayList`、`LinkedList`等,来构建一个应用程序,该程序能够展示和浏览图片。在Java编程中,集合是存储和管理对象...

    EnumTest--构造顺序:父类、类成员变量、子类.zip

    在Java中,虽然没有明确的析构函数,但可以理解为垃圾回收(Garbage Collection)过程。当一个对象不再被引用时,垃圾收集器会回收其内存。对于枚举实例,由于它们是全局的、单例的,所以通常不会被垃圾回收,因此在...

    ios-tableview镶套collection view.zip

    这种设计模式被称为“Table View 镶套 Collection View”。 在`ios-tableview镶套collection view.zip`这个压缩包中,包含了一个名为`CityDemo`的示例项目,它展示了如何在 `UITableView` 的每个单元格内实现一个 `...

    Java集合排序及java集合类详解(Collection、List、Map、Set)

    `Collection`接口是最基本的容器接口,所有单列集合都是它的子类。 ##### 常用方法 `Collection`接口提供了一些基本操作方法: - `add(E e)`:向集合中添加一个元素。 - `remove(Object o)`:从集合中移除指定...

    java笔记整理(超详细) java笔记整理(超详细)

    以下是关于Java的一些核心知识点: 1. **面向对象特性**: - 封装:将数据和操作数据的方法绑定在一起,形成一个独立的实体,减少外部对内部状态的直接访问。 - 继承:子类继承父类的属性和方法,实现代码复用,...

    java-collection-all-in-one.pdf

    LinkedHashMap是HashMap的一个子类,它维护着一条双向链表记录插入顺序或访问顺序,这样可以按照插入或访问的顺序来迭代元素。removeEldestEntry方法用于定义删除最老元素的条件,可用于实现缓存机制。 EnumMap是一...

    自动左对齐collection cell的样式.zip

    在本项目中,我们关注的是"自动左对齐Collection Cell的样式",这是一个使用Swift实现的功能,适用于iOS、macOS等平台。通过这个功能,我们可以让CollectionView中的单元格自动左对齐,提供一种整洁、有序的显示效果...

    collection集合体系与并发修改异常的解决方法

    "collection集合体系与并发修改异常的解决方法" Collection 集合体系是 Java 语言中的一种数据结构,它提供了多种方式来存储和操作数据。Collection 集合体系包括了多个接口和实现类,今天我们将对 Collection 集合...

    ios-collection view加图片.zip

    接着,我们创建UICollectionViewCell子类,用于显示图片。在cell中,我们可以使用UIImageView来加载图片,并通过SDWebImage或类似库来异步下载和缓存图片,以提高性能和用户体验。 为了实现无限滚动,我们需要监听...

Global site tag (gtag.js) - Google Analytics