`

Collection, TreeMap, LinkedHashMap, TreeSet, LinkedHashSet, Comparable

 
阅读更多
1.	Collections.sort():
List<Integer> list = new ArrayList<Integer>();
       list.add(1);
       list.add(3);
       list.add(2);

       for (int i : list) {
           System.out.println(i);
       }

       Collections.sort(list);

       for (int i : list) {
           System.out.println(i);
       }

       Collections.sort(list, new Comparator() {
           @Override
           public int compare(Object arg0, Object arg1) {
              // TODO Auto-generated method stub
              //return new Integer(arg1.toString()) - new Integer(arg0.toString());
              return arg1.toString().compareTo(arg0.toString());
           }
       });

2.	TreeMap usage:
TreeMap<String, Object> treeMap1 = new TreeMap<String, Object>();
       treeMap1.put("2", new Object());
       treeMap1.put("3", new Object());
       treeMap1.put("1", new Object());
       treeMap1.put("2", new Object());

       for (String i : treeMap1.keySet()) {
           System.out.println(i);
       }

       TreeMap<Integer, Object> treeMap2 = new TreeMap<Integer, Object>(new Comparator() {
           @Override
           public int compare(Object arg0, Object arg1) {
              // TODO Auto-generated method stub
              return new Integer(arg1.toString()) - new Integer(arg0.toString());
           }
       });

       treeMap2.put(2, new Object());
       treeMap2.put(3, new Object());
       treeMap2.put(1, new Object());

       for (int i : treeMap2.keySet()) {
           System.out.println(i);
}

3.	ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动 等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要 差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!


线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set

Map
├Hashtable
├HashMap
│       └LinkedHashMap: 遍历按照put进去的顺序进行
└WeakHashMap

Set接口有一个子接口SortedSet,提供了集合元素的顺序存储,其中元素保持升序排列.为了在加入一个元素到SortedSet实现时能对这些 元素排序,元素类型必须实现Comarable接口,或者建立SortedSet时使用Comparator.否则程序在运行时将抛出 ClassCastException.

4.LinkedHashMap:
                   Map<String, Object> treeMap1 = new LinkedHashMap<String, Object>();
       treeMap1.put("2", new Object());
       treeMap1.put("3", new Object());
       treeMap1.put("1", new Object());
       treeMap1.put("2", new Object());

       for (String i : treeMap1.keySet()) {
           System.out.println(i);
       }
                   输出结果为:2 3 1

4.	TreeSet:
Set<String> treeSet = new TreeSet<String>(new Comparator() {
           @Override
           public int compare(Object arg0, Object arg1) {
              // TODO Auto-generated method stub
              return arg1.toString().compareTo(arg0.toString());
           }
       });
       
       treeSet.add("2");
       treeSet.add("3");
       treeSet.add("1");
       treeSet.add("2");

       for (String i : treeSet) {
           System.out.println(i);
}


class ABC {
    private int value;

    public ABC(int value) {
       this.value = value;
    }

    public int getValue() {
       return this.value;
    }
}
//********** ABC必须实现Comparable接口或者TreeSet必须接收一个Comparator的实例
public class Test {

    public static void main(String[] args) {
       // TODO Auto-generated method stub
       Set<ABC> treeSet = new TreeSet<ABC>(new Comparator() {
           @Override
           public int compare(Object arg0, Object arg1) {
              // TODO Auto-generated method stub
              return ((ABC) arg0).getValue() - ((ABC) arg1).getValue();
           }
       });

       treeSet.add(new ABC(2));
       treeSet.add(new ABC(3));
       treeSet.add(new ABC(1));
       treeSet.add(new ABC(2));

       for (ABC i : treeSet) {
           System.out.println(i.getValue());
       }
    }
}

5.	LinkedHashSet
Set<String> treeSet = new LinkedHashSet<String>();
       
       treeSet.add("2");
       treeSet.add("3");
       treeSet.add("1");
       treeSet.add("2");

       for (String i : treeSet) {
           System.out.println(i);
}
输出结果为:2 3 1
分享到:
评论

相关推荐

    Java(Collection_List_Map_Set).rar_java集合类详解

    TreeSet基于TreeMap,元素按照自然排序或者自定义比较器排序;LinkedHashSet保持了元素的插入顺序,类似于HashSet与LinkedHashMap的结合。 Map接口不同于Collection,它用于存储键值对。HashMap、TreeMap和...

    浅谈Java中常用数据结构的实现类Collection和M

    这使得TreeMap的元素总是按特定顺序排列,可以是自然排序(键的Comparable接口实现)或自定义排序(通过Comparator提供)。查找、插入和删除的速度稍慢于HashMap,但提供了有序性。 3. LinkedHashMap:...

    Java集合框架常见面试题夜间阅读版.pdf

    如果需要元素有序,可以选择TreeSet、TreeMap、LinkedHashSet、LinkedHashMap等实现类;如果对集合操作性能有特别要求,比如需要快速访问,则可以选择ArrayList、HashMap等。 最后,Java集合框架还遵循了一定的设计...

    Java集合Collection、List、Set、Map使用详解

    - **TreeSet**:基于TreeMap实现,可以按元素的自然顺序或自定义比较器进行排序。 - **LinkedHashSet**:维护元素的插入顺序。 #### 1.6 总结: 集合框架中常用类比较 - **ArrayList vs LinkedList**:ArrayList...

    最新Java程序员面试题

    2. Set:不允许重复元素的集合接口,有HashSet、LinkedHashSet和TreeSet等实现。 3. List:有序且允许重复元素的集合接口,如ArrayList和LinkedList。 4. SortedSet:继承自Set,元素按特定顺序排列,如TreeSet。 5....

    JAVA容器的作用和概览

    Set接口的主要实现类有HashSet、LinkedHashSet和TreeSet。每个实现类都有其特性,例如: 1. HashSet:不保证元素的顺序,允许null元素,但不允许重复元素。 2. LinkedHashSet:保持元素插入的顺序,允许null元素,...

    java的集合框架2

    `HashSet`、`LinkedHashSet`和`TreeSet`是`Set`接口的实现。`HashSet`使用哈希表提供快速查询,不保证元素顺序;`LinkedHashSet`保持元素插入的顺序;`TreeSet`使用红黑树,元素按照排序顺序存储,保证了排序性。 `...

    java集合与通用集合

    如果元素实现了`Comparable`接口,可以通过`equals`方法比较大小,而`Comparable`接口通常用于排序操作,如在`TreeSet`和`TreeMap`中。 总的来说,Java集合框架提供了多种数据结构,适用于不同场景。理解并熟练使用...

    编程语言Java集合.pdf

    具体到本文件中,它提到了Set、List、Map以及它们各自的实现类,如HashSet、LinkedHashSet、TreeSet、ArrayList、LinkedList、HashMap、LinkedHashMap和TreeMap。 集合框架中的Set接口是一个不允许重复元素的集合,...

    jdk 的集合框架的主体结构

    `Set`接口不允许重复元素,例如`HashSet`、`TreeSet`和`LinkedHashSet`,它们各自有不同的遍历和排序特性。 `Set`接口中的`HashSet`不保证元素顺序,但允许快速查找,它要求元素的`equals()`和`hashCode()`方法被...

    Java集合框架

    TreeSet是基于红黑树实现的,它可以确保集合中的元素是有序的,如果需要自然排序则元素需要实现Comparable接口,或者通过Comparator进行定制排序。 List接口的常用实现类有ArrayList和Vector,它们都是基于动态数组...

    set-collections-map

    Set接口主要有三种实现类:`HashSet`、`LinkedHashSet`以及`TreeSet`。 ##### 1.1 认识Set集合的特点 - **HashSet**:基于哈希表的实现,不保证元素的顺序,不允许重复元素。 - **LinkedHashSet**:基于哈希表和...

    Java集合排序及java集合类详解

    2. Set接口:Set接口的实现类主要有HashSet、LinkedHashSet和TreeSet。HashSet是基于哈希表实现的,不保证元素的顺序,但查找速度快;LinkedHashSet在HashSet基础上保持了元素的插入顺序;而TreeSet则由红黑树实现,...

    java学习笔记

    3. `TreeSet`则依据元素的自然排序或定制排序进行存储,要求存储的元素必须实现`Comparable`接口,或者在创建`TreeSet`时提供一个`Comparator`实例。自然排序是指元素自身具备比较能力,而定制排序则可以通过自定义...

    算法、常用数据结构、文件资料、多线程和XML解析 资料汇总

    - **插入顺序**:`LinkedHashMap` 维护了元素的插入顺序,这使其成为一个结合了 `HashMap` 的性能优势和 `TreeMap` 的排序特性的选择。 - **迭代顺序**:通过迭代器遍历时,元素将按照插入顺序呈现。 ### 知识点四...

    java集合,java集合

    LinkedHashSet保持了元素的插入顺序,TreeSet则根据元素的自然排序或自定义比较器维护排序顺序。 3. **Queue接口**:Queue是一种特殊的集合,主要用于实现先进先出(FIFO)的数据结构。LinkedList也实现了Queue接口...

    数据结构面试专题.docx

    - **Map接口**:不继承Collection,提供键值对映射,如HashMap、TreeMap和LinkedHashMap。 - **Set接口**:不包含重复元素,如HashSet、LinkedHashSet和TreeSet。 - **List接口**:有序集合,允许重复元素,支持...

Global site tag (gtag.js) - Google Analytics