java之数组与集合

数组:

  数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。

1、创建数组

  数组变量的声明,和创建数组可以用一条语句完成,如下所示:
  DataType[] array = new DataType[arraySize];

  另外,你还可以使用如下的方式创建数组。
  DataType[] array = {value0, value1, ..., valuek};

代码示例:

 1 public class TestArray {
 2     public static void main(String[] args) {
 3       // 数组大小
 4       int size = 10;
 5       // 定义数组
 6       double[] myList = new double[size];
 7       myList[0] = 5.6;
 8       myList[1] = 4.5;
 9       myList[2] = 3.3;
10       myList[3] = 13.2;
11       myList[4] = 4.0;
12       myList[5] = 34.33;
13       myList[6] = 34.0;
14       myList[7] = 45.45;
15       myList[8] = 99.993;
16       myList[9] = 11123;
17       // 计算所有元素的总和
18       double total = 0;
19       for (int i = 0; i < size; i++) {
20          total += myList[i];
21       }
22       System.out.println("总和为: " + total);
23     }
24 }
25     

运行结果为:

总和为: 11367.373

2、多维数组

多维数组可以看成是数组的数组,比如二维数组,其每一个元素都是一个一维数组,例如:

 1 //定义一个二维数组,其可以看成一个三行两列的数组。
 2 String[][] str = new String[3][2];
 3 
 4 //初始化数组
 5 //第一种方式
 6 str[0] = {"a","b"};
 7 str[1] = {"一","二"};
 8 str[2] = {"xx","<??"};
 9 //第二种方式
10 str[0][0] = new String("Go");
11 str[0][1] = new String("Lu");
12 str[1][0] = new String("to");
13 str[1][1] = new String("fo");
14 str[2][0] = new String("我们");
15 str[2][1] = new String("!");

3、Array 类

Array 类提供了动态创建和访问 Java 数组的方法。其构造方法私有化所以不能被实例化,类被final修饰所以不能被继承。

代码示例:

 1 public class Test3 {
 2     public static void main(String[] args) {
 3       //创建一个数组
 4       String[] strArray = (String[]) Array.newInstance(String.class, 3);
 5       //往数组里添加元素
 6       Array.set(strArray, 0, "wo");
 7       Array.set(strArray, 1, "哈哈");
 8       Array.set(strArray, 2, "123");
 9       System.out.println("Array.get()获取元素 >>"+Array.get(strArray, 1));
10       System.out.println("Arrays 将数组转成字符串 >>"+Arrays.toString(strArray));
11     }
12 }    

运行结果为:

Array.get()获取元素 >>哈哈
Arrays 将数组转成字符串 >>[wo, 哈哈, 123]

4、Arrays 类

此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。其比 Array 类更加灵活,在对数组操作时使用较多。

  • 给数组赋值:通过 fill 方法。
  • 对数组排序:通过 sort 方法,按升序。
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
 1 //数组赋值
 2 public static void main(String[] args) {
 3     Integer[] array = new Integer[5];
 4     Arrays.fill(array,0,3,9); // 给数组下标 0~2的元素填充9
 5     System.out.println(Arrays.toString(array));  // 输出[9, 9, 9, null, null]
 6 }
 7 
 8 //数组排序
 9 public static void main(String[] args) {
10     int[] array = {3,2,1,4,5};
11     Arrays.sort(array);  // 从小到大排序
12         //Arrays.sort(array, Collections.reverseOrder());  // 从大到小排序
13     System.out.println(Arrays.toString(array));  
14     // 输出 [1, 2, 3, 4, 5]
15 }
16 
17 //数组比较,适用于一维数组
18 public static void main(String[] args) {
19         int[] array1 = {1,2,3};
20         int[] array2 = {1,2,3};
21         int[] array3 = {1,2,4};
22         System.out.println(Arrays.equals(array1,array2));  //数组的比较,返回true
23         System.out.println(Arrays.equals(array1,array3));  //数组的比较,返回false
24     }
25 
26 //查找数组元素
27 public static void main(String[] args) {
28     Integer[] array = {1,2,3,4,5};
29     //binarySearch使用二分搜索法来搜索指定数组(排序后的数组,否则结果不准确)
30     //参数为要搜索的数组 要搜索的元素,返回值为元素在数组内的的下标
31     System.out.println(Arrays.binarySearch(array, 2));  // 输出 1
32 }
33 
34 //上面只是列举了一些Arrays的方法,它还有很多实用的方法

 集合:

本篇集合的内容主要为其基础用法,详细内容请参考:

https://www.cnblogs.com/ymzsb/p/14887610.html

 

java中集合是采用不同数据结构实现的存放数据的容器。其分为单例集合Collection、双列集合Map

  • Collection:是单列集合的顶层接口,其下经常使用的有List(有序集合)、Set(无序集合)。
  • Map:是双列集合的顶层接口,经常使用的实现类有HashMap、LinkedHashMap、Hashtable。

1、ArrayList

ArrayList实现了List接口,其是开发中最常使用的List实现类。使用示例:

 1 import java.util.ArrayList;
 2 
 3 public class RunoobTest {
 4     public static void main(String[] args) {
 5         //创建一个 ArrayList 其泛型为 String ,在创建集合时泛型必须为引用数据类型
 6         ArrayList<String> sites = new ArrayList<String>();
 7         //1.添加元素
 8         sites.add("Google");
 9         sites.add("Runoob");
10         sites.add("Taobao");
11         sites.add("Weibo");
12         //输出 [Google, Runoob, Taobao, Weibo]
13         System.out.println(sites);
14         //2.访问元素      
15         //参数为元素下标,执行结果,输出 Runoob
16         System.out.println(sites.get(1));  
17         //3.设置元素
18         //第一个参数为索引位置,第二个为要修改的值
19         sites.set(2, "Wiki"); 
20         //输出结果为 Wiki
21         System.out.println(sites.get(2));
22         //4.删除元素
23         String site = sites.remove(3); 
24         //已经删除的元素,输出结果 Weibo
25         System.out.println(site);
26         //输出结果为[Google, Runoob, Taobao]
27         System.out.println(sites);
28     }
29 }

2、HashSet

HashSet实现了 Set 接口,其是开发中比较常用的 Set 实现类。使用示例:

 1 // 引入 HashSet 类      
 2 import java.util.HashSet;
 3 
 4 public class RunoobTest {
 5     public static void main(String[] args) {
 6         //创建一个 HashSet 其泛型为 String 
 7         HashSet<String> sites = new HashSet<String>();
 8         sites.add("Google");
 9         sites.add("Runoob");
10         sites.add("Taobao");
11         sites.add("Zhihu");
12         // 重复的元素不会被添加
13         sites.add("Runoob"); 
14         //输出 [Runoob, Taobao, Zhihu, Google]
15         System.out.println(sites);
16         //判断元素是否存在  输出true
17         System.out.println(sites.contains("Taobao"));
18         // 删除元素,删除成功返回 true,否则为 false
19         sites.remove("Taobao");  
20         //输出 [Google, Runoob, Zhihu]
21         System.out.println(sites);
22     }
23 }

3、HashMap

HashMap实现的 Map 接口,它存储的内容是键值对(key-value)映射。在开发中经常使用的 map 实现类,使用示例:

 1 // 引入 HashMap 类      
 2 import java.util.HashMap;
 3 
 4 public class RunoobTest {
 5     public static void main(String[] args) {
 6         // 创建 HashMap 对象 Sites
 7         HashMap<Integer, String> Sites = new HashMap<Integer, String>();
 8         //1.添加元素      添加键值对
 9         Sites.put(1, "Google");
10         Sites.put(2, "Runoob");
11         Sites.put(3, "Taobao");
12         Sites.put(4, "Zhihu");
13         //输出 {1=Google, 2=Runoob, 3=Taobao, 4=Zhihu}
14         System.out.println(Sites);
15         //2.访问元素  
16         //输出  Taobao
17         System.out.println(Sites.get(3));
18         //3.删除元素
19         Sites.remove(4);
20         //输出  {1=Google, 2=Runoob, 3=Taobao}
21         System.out.println(Sites);
22         //map的大小 
23         System.out.println(Sites.size());
24     }
25 }

 

posted @ 2021-06-14 00:10  夜猫子1130  阅读(308)  评论(0编辑  收藏  举报