本文介绍了ArrayList类、LinkedList类、HashSet类、TreeSet类、HashMap类、Collection工具类常用的成员方法。
ArrayList类:
- 集合是一种存储空间可变的存储模型,存储的数据容量可以发生改变。
- ArrayList集合的底层是数组实现的。
- ArrayList的长度可以变化。
常用方法:
方法名 |
说明 |
public boolean remove(Object o) |
删除指定的元素,返回删除是否成功 |
public E remove(int index) |
删除指定索引处的元素,返回被删除的元素 |
public E set(int index,E element) |
修改指定索引处的元素,返回被修改的元素 |
public E get(int index) |
返回指定索引处的元素 |
public int size() |
返回集合中的元素的个数 |
public boolean add(E e) |
将指定的元素追加到此集合的末尾 |
public void add(int index,E element) |
在此集合中的指定位置插入指定的元素 |
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator;
public class ArrayListDemo { public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("Tom"); arrayList.add("Lucy"); arrayList.add("Jack"); arrayList.add("Mike"); arrayList.add("aabyte"); System.out.println(arrayList); System.out.println(arrayList.remove("Lucy")); System.out.println(arrayList); System.out.println(arrayList.remove(2)); System.out.println(arrayList); System.out.println(arrayList.set(2,"AaByte")); System.out.println(arrayList); System.out.println(arrayList.get(1)); Collections.sort(arrayList); arrayList.forEach(System.out::println); Collections.sort(arrayList, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.compareTo(o2); } }); Collections.sort(arrayList, String::compareTo); for(int i = 0; i < arrayList.size(); ++i){ System.out.println(arrayList.get(i)); } for(String s : arrayList){ System.out.println(s); } Iterator<String> iterator = arrayList.iterator(); while(iterator.hasNext()){ String str = iterator.next(); System.out.println(str); iterator.remove(); } } }
|
Vector和ArrayList的成员方法类似,不同之处在于:Vector线程安全、ArrayList非线程安全,但ArrayList性能更佳,所以单线程情况下推荐使用ArrayList。
LinkedList类:
LinkedList底层由双向链表实现,增删效率比ArrayList高,改查效率不及ArrayList。
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import java.util.Iterator; import java.util.LinkedList;
public class LinkedListDemo { public static void main(String[] args) { LinkedList<String> linkedList = new LinkedList<>(); linkedList.add("Tom"); linkedList.add("Lucy"); linkedList.add("Mike"); linkedList.add("Jane"); linkedList.add("aabyte");
System.out.println(linkedList); System.out.println(linkedList.remove()); System.out.println(linkedList); System.out.println(linkedList.remove("aabyte")); System.out.println(linkedList); linkedList.set(1,"Java"); System.out.println(linkedList); System.out.println(linkedList.get(1)); for (String s : linkedList) { System.out.println(s); } Iterator<String> iterator= linkedList.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } }
|
HashSet类:
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| import java.util.HashSet; import java.util.Iterator;
public class SetDemo { public static void main(String[] args) { HashSet<String> hashSet = new HashSet<>(); hashSet.add("Tom"); hashSet.add("Lucy"); hashSet.add("Jane"); hashSet.add("Mike"); hashSet.add("Tom"); System.out.println(hashSet); hashSet.remove("Jane"); for(String s : hashSet){ System.out.println(s); } Iterator<String> iterator = hashSet.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } HashSet<String> hashSet1 = new HashSet<>(); hashSet1.add("Tom"); hashSet1.add("Lucy"); hashSet1.add("Java"); hashSet1.add("Python");
hashSet.addAll(hashSet1); System.out.println(hashSet); hashSet.removeAll(hashSet1); System.out.println(hashSet); HashSet<String> hashSet2 = new HashSet<>(); hashSet2.add("Tom"); hashSet2.add("Mike"); hashSet2.retainAll(hashSet); System.out.println(hashSet2); } }
|
TreeSet类:
其构造器可以传入比较器,所以TreeSet常用来排序。
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import java.util.Comparator; import java.util.TreeSet;
public class TreeSetDemo { public static void main(String[] args) { TreeSet<String> treeSet = new TreeSet<>(); treeSet.add("Tom"); treeSet.add("Lucy"); treeSet.add("Jack"); treeSet.add("aabyte"); treeSet.add("Jane"); System.out.println(treeSet);
treeSet = new TreeSet<>(new Comparator<String>() { @Override public int compare(String o1, String o2) { return o2.compareTo(o1); } }); treeSet.add("Tom"); treeSet.add("Lucy"); treeSet.add("Jack"); treeSet.add("aabyte"); treeSet.add("Jane"); System.out.println(treeSet); } }
|
HashMap类:
双列集合,以键值对的形式存储,key不可重复,value可重复。
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import java.util.HashMap; import java.util.Hashtable; import java.util.Map;
public class CollentionDemo3 { public static void main(String[] args) { HashMap<String, String> hashMap = new HashMap<>(); Hashtable<String, Integer> hashtable= new Hashtable<>(); Map<Integer,Student> studentMap = new HashMap<>(); studentMap.put(1, new Student("Jack","2011050721")); studentMap.put(2, new Student("Tom","2011050722")); studentMap.put(3, new Student("Jerry","2011050723")); studentMap.put(4, new Student("Lucy","2011050724")); System.out.println(studentMap.size()); for(Integer key: studentMap.keySet()){ Student s = studentMap.get(key); System.out.println(s.getName()); } for(Map.Entry<Integer,Student> entry:studentMap.entrySet()){ Integer i = entry.getKey(); Student s = entry.getValue(); } System.out.println(studentMap.get(0)); int k = 1; if(!studentMap.containsKey(1)){ studentMap.put(k, new Student()); } studentMap.remove(1); } }
|
Student类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class Student { String name; String id; public Student() { } public Student(String name, String id) { this.name = name; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", id='" + id + '\'' + '}'; } }
|
Collections工具类:
- Collections 是一个操作 Set、List 和 Map 等集合的工具类。
- Collections 中提供了一系列静态方法对集合元素进行排序、查询和修改操作。
排序:
均为static方法。
- reverse (List):反转 List 中元素的排序;
- shuffle (List) : 对 List 集合元素进行随机排序;
- sort (List) : 根据元素的自然顺序对指定的 List 集合元素按升序排序;
- sort (List,Comparator) :根据指定的 Comparator 产生的顺序对 List 集合元素进行排序;
- swap (List ,int,int) :将指定 List 集合中的 i 处元素 和 j 处元素进行交换;
查找、替换:
- Object max ( Collection ) :根据元素的自然顺序,返回给定集合中的最大元素。
- Object max ( Collection , Comparator ) :根据 Comparator 指定的顺序,返回给定集合中的最大元素。
- Object min ( Collection ) :根据元素的自然顺序,返回给定集合中的最小元素。
- Object min ( Collection , Comparator ) :根据 Comparator 指定的顺序,返回给定集合中的最小元素。
- int frequency ( Collection , Object ) : 返回指定集合中指定元素的出现次数。
- void copy ( List dest , List src ) : 将 src 中的内容复制到 dest 中。
- boolean replaceAll ( List list , Object oldVal , Object newVal ) : 使用新值替换List对象的所有旧值。