Java集合类

目录

 

一、整体架构图

二、List集合类(有序的,可重复的)

1.顺序列表ArrayList

2.链式列表LinkedList

三、Set集合类(不可重复)

1.HashSet(哈希集合)

2.LinkedHashSet(链式哈希集合)

3.TreeSet(树形集合)

四、Map集合类(无序,键唯一,值不唯一)

五、数组


 

一、整体架构图

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNDU0MDU4,size_16,color_FFFFFF,t_70#pic_center

二、List集合类(有序的,可重复的)

1.顺序列表ArrayList

ArrayList实现了List的接口,是基于可变长度属组的列表实现


  
  
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. public class y2 {
  6. public static void main (String[] args) {
  7. //定义方法
  8. List<String> list = new ArrayList<String>();
  9. //添加元素
  10. list.add( "aaa");
  11. list.add( "bbb");
  12. list.add( "ccc");
  13. //遍历方法1,使用size与get方法
  14. for ( int i= 0;i<list.size();i++){
  15. System.out.println(list.get(i));
  16. }
  17. //删除下标为1的元素
  18. list.remove( 1);
  19. //遍历方法2:采用加强for循环的方法
  20. for (String s:list){
  21. System.out.println(s);
  22. }
  23. //获得下标为1的元素
  24. System.out.println(list.get( 1));
  25. //遍历方法3:使用Iterator接口
  26. Iterator<String> iterator = list.iterator();
  27. //Iterator主要方法:
  28. //hasNext()用来判断是否还有下一个元素
  29. //next()用来获得下一个元素
  30. //remove用来删除当前元素
  31. while(iterator.hasNext()){
  32. System.out.println(iterator.next());
  33. }
  34. //List集合排序
  35. Collections.sort(list);
  36. }
  37. }

2.链式列表LinkedList

LinkedList也实现了List接口,其实质是基于指针(链)的列表实现


  
  
  1. import java.util.*;
  2. public class y2 {
  3. public static void main (String[] args) {
  4. //定义方法
  5. LinkedList<String> list = new LinkedList<String>();
  6. //添加元素
  7. list.add( "aaa");
  8. list.add( "bbb");
  9. list.add( "ccc");
  10. //向列表头插入一个元素
  11. list.addFirst( "zzm");
  12. //向列表尾插入一个元素
  13. list.addLast( "mzm");
  14. //遍历方法1,使用size与get方法
  15. for ( int i= 0;i<list.size();i++){
  16. System.out.println(list.get(i));
  17. }
  18. System.out.println( "---------------");
  19. //删除下标为1的元素
  20. list.remove( 1);
  21. //删除列表头的元素
  22. list.removeFirst();
  23. //删除列表尾的元素
  24. list.removeLast();
  25. //遍历方法2:采用加强for循环的方法
  26. for (String s:list){
  27. System.out.println(s);
  28. }
  29. System.out.println( "---------------");
  30. //获得下标为1的元素
  31. System.out.println(list.get( 1));
  32. //获得列表头元素
  33. System.out.println(list.getFirst());
  34. //获得列表尾元素
  35. System.out.println(list.getLast());
  36. System.out.println( "---------------");
  37. //遍历方法3:使用Iterator接口
  38. Iterator<String> iterator = list.iterator();
  39. //Iterator主要方法:
  40. //hasNext()用来判断是否还有下一个元素
  41. //next()用来获得下一个元素
  42. //remove用来删除当前元素
  43. while(iterator.hasNext()){
  44. System.out.println(iterator.next());
  45. }
  46. //List集合排序
  47. Collections.sort(list);
  48. }
  49. }

三、Set集合类(不可重复)

1.HashSet(哈希集合)

HashSet实现了Set接口,并且不保证元素的迭代顺序,对其进行添加、删除元素等操作的时间复杂度是常量级的。


  
  
  1. import java.util.HashSet;
  2. import java.util.Set;
  3. public class y3 {
  4. public static void main (String[] args) {
  5. //定义
  6. Set<String> hashSet = new HashSet<String>();
  7. //添加元素
  8. hashSet.add( "aaa");
  9. hashSet.add( "bbb");
  10. hashSet.add( "ccc");
  11. //遍历结果是无序的
  12. System.out.println(hashSet);
  13. }
  14. }

2.LinkedHashSet(链式哈希集合)

LinkedHashSet继承与HashSet,其也是根据元素的哈希码来决定元素的存储位置。


  
  
  1. import java.util.LinkedHashSet;
  2. import java.util.Set;
  3. public class y3 {
  4. public static void main (String[] args) {
  5. //定义
  6. Set<String> linkedHashSet = new LinkedHashSet<String>();
  7. //添加元素
  8. linkedHashSet.add( "aaa");
  9. linkedHashSet.add( "bbb");
  10. linkedHashSet.add( "ccc");
  11. linkedHashSet.add( "zzm");
  12. //遍历结果是无序的
  13. System.out.println(linkedHashSet);
  14. }
  15. }

3.TreeSet(树形集合)

TreeSet采用树形结构来存取集合元素(输出为有序,默认升序)


  
  
  1. import java.util.Comparator;
  2. import java.util.Set;
  3. import java.util.TreeSet;
  4. public class y3 {
  5. public static void main (String[] args) {
  6. //定义
  7. Set<String> treeSet = new TreeSet<String>();
  8. //添加元素
  9. treeSet.add( "aaa");
  10. treeSet.add( "ddd");
  11. treeSet.add( "ccc");
  12. //遍历结果是有序的(默认为升序)
  13. for (String s:treeSet){
  14. System.out.println(s);
  15. }
  16. //创建TreeSet时指定了比较器(覆盖了String默认比较规则)
  17. Set<String> treeSet2 = new TreeSet<String>( new Comparator<String>() {
  18. @Override
  19. public int compare (String o1, String o2) {
  20. return o2.length()-o1.length();
  21. }
  22. });
  23. treeSet2.add( "abcde");
  24. treeSet2.add( "zed");
  25. treeSet2.add( "abcd");
  26. //按照字符串长度降序排列字符串
  27. for (String s2:treeSet2){
  28. System.out.println(s2);
  29. }
  30. }
  31. }

四、Map集合类(无序,键唯一,值不唯一)


  
  
  1. import java.util.*;
  2. public class y4{
  3. public static void print (Map<Integer,String> map) {
  4. map.put( 1, "张三");
  5. map.put( 3, "王五");
  6. map.put( 2, "李四");
  7. //获取map对象中键的集合
  8. Set<Integer> set = map.keySet();
  9. //遍历这个map
  10. for (Integer key:set){
  11. System.out.println(key+ ": "+map.get(key));
  12. }
  13. }
  14. public static void main (String[] args) {
  15. //HashMap存放的次序
  16. print( new HashMap<Integer,String>());
  17. //LinkedHashMap存放次序
  18. print( new LinkedHashMap<Integer,String>());
  19. //TreeSet存放次序
  20. print( new TreeMap<Integer,String>());
  21. }
  22. }

由运行结果得知,HashMap的遍历结果是无序的,LinkedHashMap是按照加入顺序遍历,TreeMap是按照值升序遍历

五、数组


  
  
  1. import java.util.Arrays;
  2. import java.util.Collections;
  3. import java.util.Scanner;
  4. public class y5 {
  5. public static void main (String[] args) {
  6. Scanner sc = new Scanner(System.in);
  7. //定义数组
  8. int[] a = new int[ 10];
  9. //为一个数组赋初值
  10. for ( int i= 0;i< 10;i++){
  11. a[i] = sc.nextInt();
  12. }
  13. //数组遍历
  14. for ( int s:a){
  15. System.out.print(s+ " ");
  16. }
  17. System.out.println();
  18. //数组排序(默认为升序)
  19. Arrays.sort(a);
  20. for ( int s:a){
  21. System.out.print(s+ " ");
  22. }
  23. System.out.println();
  24. //数组降序排列(需要包装类型数组)
  25. Integer[] integers = new Integer[ 5];
  26. for ( int i= 0;i< 5;i++){
  27. integers[i] = sc.nextInt();
  28. }
  29. Arrays.sort(integers, Collections.reverseOrder());
  30. for (Integer s:integers){
  31. System.out.print(s+ " ");
  32. }
  33. }
  34. }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值