关于数组输入--类似于C那种动态分配数组内存的JAVA解决
来源:互联网 发布:英国大学精算 知乎 编辑:程序博客网 时间:2024/05/16 17:07
C语言是通过动态分配内存解决动态数组的。但是java中我们初始化数组必须要指定数组长度或者是指定数组的值。
这个时候有一种做法就是给数组分配一个很大的长度的数组空间,显然这样做是类似于C的解决之道。其实还有更优解。
java中的集合框架啊,其中的List集合更是解决这个问题的不二法门,我们可以先new一个ArrayList,我们把我们最不擅长的动态分配内存这个点交给框架去做就是。再说List转数组List集合的API是有提供的,即toArray()方法。这样做我们就不必关心一组输入值的长度而去考虑给它分配多大的数组空间了。
附携程水题代码:
问题描述:
第一行:n
第二行:n 个整数
第三行:m
第四行:m 个整数
输出:整合n,m个数后的数组的中位数。
/** * Copyright: Copyright (c) 2017 Asiainfo* * @ClassName: BTest.java* @Description: 试题测试** @version: v1.0.0* @author: wantu* @date: 2017年9月21日 下午8:17:21 ** Modification History:* Date Author Version Description*---------------------------------------------------------** 2017年9月21日 wantu v1.0.0 修改原因*/package com.briup.test;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Scanner;import java.util.Set;/** * Copyright: Copyright (c) 2017 Asiainfo* * @ClassName: BTest.java* @Description: 求合并数组的中位数** @version: v1.0.0* @author: wantu* @date: 2017年9月21日 下午8:17:21 ** Modification History:* Date Author Version Description*---------------------------------------------------------** 2017年9月21日 wantu v1.0.0 修改原因*/public class BTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("输入N"); int n = scanner.nextInt(); //过多无用的内存了,造成大量的内存没有使用 /*String[] a = new String[999];String[] b = new String[999];*/ List<String> a = new ArrayList<>(); List<String> b = new ArrayList<>(); String[] result = null; for(int i=0; i < n;i++){ a.add(scanner.nextInt()+""); } System.out.println("输入M:"); int m = scanner.nextInt(); for(int i=0; i < m;i++){ b.add(scanner.nextInt()+""); } result =union(a, b); System.out.println("合并数组长度:"+result.length+"值为:"); for(int i =0;i<result.length;i++){ System.out.println(result[i]); } int index = (result.length)/2; int index2 = result.length; int mid = (index2-1)/2; if(result.length%2==0){ System.out.println((Integer.parseInt(result[mid])+Integer.parseInt(result[mid+1]))*1.0/2); }else{ System.out.println(Integer.parseInt(result[(index2-1)/2])); } } public static String[] union(List<String> arr1, List<String> arr2) { Set<String> set = new HashSet<String>(); for (String str : arr1) { set.add(str); } for (String str : arr2) { set.add(str); } String[] result = {}; return set.toArray(result); }}
阅读全文
0 0
- 关于数组输入--类似于C那种动态分配数组内存的JAVA解决
- 关于c/c++中传统数组和动态分配内存两者的对比
- C语言为二维数组动态分配内存的问题
- C语言中二维数组动态分配内存
- C、C++二维数组动态分配内存
- 二维数组动态分配内存
- 二维数组动态分配内存
- 二维数组动态分配内存
- 二维数组动态分配内存
- 二维数组动态分配内存
- 二维数组动态分配内存
- c++动态分配二维/三维数组的内存
- c和c++中的一维数组和二维数组的动态分配内存,以及参数传递
- c动态分配 数组指针
- C 语言动态分配数组
- C语言动态分配数组
- 关于二维数组的动态分配空间
- 关于new动态分配数组的一些体会
- jq代码学习9--合成事件 fl ch4 105
- java小程序——提取地址中的文件名
- 嵌入式多路温湿度监控系统(十一boa网页界面)
- 完整的m序列序列生成函数和调用
- chroot ubuntu 16.04 on android
- 关于数组输入--类似于C那种动态分配数组内存的JAVA解决
- 大数据 第一节课 linux基础 基本的操作
- Jzoj3895 数字对
- Qt定时器的应用,实现时钟的状态
- Gym 101142G Gangsters in Central City【思维+Lca】
- 高级C语言教程-C语言函数setjmp()函数
- bzoj1731 [Usaco2005 dec]Layout 排队布局(差分约束+spfa)
- PHP最常用的设计模式
- Tensorflow实战Google-第三章-简单神经网络