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
分享到:
相关推荐
TreeSet基于TreeMap,元素按照自然排序或者自定义比较器排序;LinkedHashSet保持了元素的插入顺序,类似于HashSet与LinkedHashMap的结合。 Map接口不同于Collection,它用于存储键值对。HashMap、TreeMap和...
这使得TreeMap的元素总是按特定顺序排列,可以是自然排序(键的Comparable接口实现)或自定义排序(通过Comparator提供)。查找、插入和删除的速度稍慢于HashMap,但提供了有序性。 3. LinkedHashMap:...
如果需要元素有序,可以选择TreeSet、TreeMap、LinkedHashSet、LinkedHashMap等实现类;如果对集合操作性能有特别要求,比如需要快速访问,则可以选择ArrayList、HashMap等。 最后,Java集合框架还遵循了一定的设计...
- **TreeSet**:基于TreeMap实现,可以按元素的自然顺序或自定义比较器进行排序。 - **LinkedHashSet**:维护元素的插入顺序。 #### 1.6 总结: 集合框架中常用类比较 - **ArrayList vs LinkedList**:ArrayList...
2. Set:不允许重复元素的集合接口,有HashSet、LinkedHashSet和TreeSet等实现。 3. List:有序且允许重复元素的集合接口,如ArrayList和LinkedList。 4. SortedSet:继承自Set,元素按特定顺序排列,如TreeSet。 5....
Set接口的主要实现类有HashSet、LinkedHashSet和TreeSet。每个实现类都有其特性,例如: 1. HashSet:不保证元素的顺序,允许null元素,但不允许重复元素。 2. LinkedHashSet:保持元素插入的顺序,允许null元素,...
`HashSet`、`LinkedHashSet`和`TreeSet`是`Set`接口的实现。`HashSet`使用哈希表提供快速查询,不保证元素顺序;`LinkedHashSet`保持元素插入的顺序;`TreeSet`使用红黑树,元素按照排序顺序存储,保证了排序性。 `...
如果元素实现了`Comparable`接口,可以通过`equals`方法比较大小,而`Comparable`接口通常用于排序操作,如在`TreeSet`和`TreeMap`中。 总的来说,Java集合框架提供了多种数据结构,适用于不同场景。理解并熟练使用...
具体到本文件中,它提到了Set、List、Map以及它们各自的实现类,如HashSet、LinkedHashSet、TreeSet、ArrayList、LinkedList、HashMap、LinkedHashMap和TreeMap。 集合框架中的Set接口是一个不允许重复元素的集合,...
`Set`接口不允许重复元素,例如`HashSet`、`TreeSet`和`LinkedHashSet`,它们各自有不同的遍历和排序特性。 `Set`接口中的`HashSet`不保证元素顺序,但允许快速查找,它要求元素的`equals()`和`hashCode()`方法被...
- **TreeSet**:基于`TreeMap`实现,可以按元素的自然顺序或自定义比较器进行排序。 - **LinkedHashSet**:保持插入顺序的`HashSet`实现。 #### 六、总结:集合框架中常用类比较 - **ArrayList** vs **LinkedList*...
TreeSet是基于红黑树实现的,它可以确保集合中的元素是有序的,如果需要自然排序则元素需要实现Comparable接口,或者通过Comparator进行定制排序。 List接口的常用实现类有ArrayList和Vector,它们都是基于动态数组...
Set接口主要有三种实现类:`HashSet`、`LinkedHashSet`以及`TreeSet`。 ##### 1.1 认识Set集合的特点 - **HashSet**:基于哈希表的实现,不保证元素的顺序,不允许重复元素。 - **LinkedHashSet**:基于哈希表和...
2. Set接口:Set接口的实现类主要有HashSet、LinkedHashSet和TreeSet。HashSet是基于哈希表实现的,不保证元素的顺序,但查找速度快;LinkedHashSet在HashSet基础上保持了元素的插入顺序;而TreeSet则由红黑树实现,...
3. `TreeSet`则依据元素的自然排序或定制排序进行存储,要求存储的元素必须实现`Comparable`接口,或者在创建`TreeSet`时提供一个`Comparator`实例。自然排序是指元素自身具备比较能力,而定制排序则可以通过自定义...
- **插入顺序**:`LinkedHashMap` 维护了元素的插入顺序,这使其成为一个结合了 `HashMap` 的性能优势和 `TreeMap` 的排序特性的选择。 - **迭代顺序**:通过迭代器遍历时,元素将按照插入顺序呈现。 ### 知识点四...
LinkedHashSet保持了元素的插入顺序,TreeSet则根据元素的自然排序或自定义比较器维护排序顺序。 3. **Queue接口**:Queue是一种特殊的集合,主要用于实现先进先出(FIFO)的数据结构。LinkedList也实现了Queue接口...
- **Map接口**:不继承Collection,提供键值对映射,如HashMap、TreeMap和LinkedHashMap。 - **Set接口**:不包含重复元素,如HashSet、LinkedHashSet和TreeSet。 - **List接口**:有序集合,允许重复元素,支持...