集合框架组成部分:
1.Collection(存放单列数据):
List接口 存放数据可以允许重复
ArrayList 底层基于数组数据结构实现
LinkedList 底层基于链表数据结构实现
Set接口 不允许存放重复数据
HashSet 不允许存入重复数据,底层基于Map集合实现
2.Map
HashMap底层基于数组+链表实现(jdk1.7)底层基于数组+链表+红黑树实现(jdk1.8)
ArratList集合
ArrayList类是一个可以动态修改的数组,与普通数组最大的区别就是没有固定大小的限制
ArrayList继承了AbstractList,并实现了List接口
ArrayList<>objectName = new ArrayList<>();初始化
ArrayList中的元素实际为对象,在以上实例中,数组列表元素都是字符串String类型
如果要存储其他类型,而E只能为引用数据类型;
在集合中,使用泛型<E>必须使用引用数据类型,如果使用基本数据类型,则要使用其包装类的形式
ArrayList集合常见方法:
Iterator():返回iterator接口的实例,用于遍历集合元素
hasNext():判断是否有下一个元素
next():指针下移,将下移以后集合上的位置上的元素返回
增强for循环:
for(集合元素类型 局部变量:集合对象){
//code
}
例子:
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
这是一道leetcode上一道难度为困难的例题,我们集合的方法来实现它:
首先看代码:
import java.util.ArrayList; public class findMedianSortedArrays { public static void main(String[] args){ findMedianSortedArrays f = new findMedianSortedArrays(); int[] array1 = {1,2}; int[] array2 = {3,4}; int[] arr1 = {1,3}; int[] arr2 = {2}; System.out.println(f.fun(array1,array2)); System.out.println(f.fun(arr1,arr2)); } public double fun(int[] sums1, int[] sums2){ ArrayList<Integer> arrayList1 = new ArrayList<Integer>(); arrayList1 = fun_res(sums1); for (int i = 0;i<sums2.length;i++){ arrayList1.add(sums2[i]); } for(int i = 1;i<arrayList1.size();i++){ for (int j = i-1;j>=0 && arrayList1.get(j)>arrayList1.get(j+1);j--){ swap(arrayList1,j,j+1); } } double number = 0; for (Integer integer:arrayList1){ if (arrayList1.size() % 2!=0){ number = arrayList1.get(arrayList1.size()/2); }else{ number = (double) (arrayList1.get(arrayList1.size()/2) + arrayList1.get(arrayList1.size()/2 - 1))/2; } } return number ; } public ArrayList<Integer> fun_res(int[] array){ ArrayList<Integer> arrayList = new ArrayList<Integer>(); for (int i = 0;i<array.length;i++){ arrayList.add(array[i]); } return arrayList; } public static void swap(ArrayList arrayList,int i,int j){ Object temp = arrayList.get(j); arrayList.set(j,arrayList.get(i)); arrayList.set(i,temp); } }
输出结果:
流程:需要将数组类型元素放到集合里去(ArrayList<Integer> fun_res(int[] array)),然后将第二个数组的元素放到集合里面去,最终我们的集合就包含了这两个数组的所有元素,
然后利用插入排序,对集合里面的元素进行排序,最终通过返回下标的方法,得到中位数。这俩面需要考虑两种情况,一种是元素个数为奇数是,返回中间即可,第二种情况,偶数时,
需要返回(中间+中间-1)/2。
标签:Java,int,ArrayList,元素,arrayList1,数组,集合 From: https://www.cnblogs.com/99kol/p/16633381.html