一个Java基础练习
今天在群里又有一个朋友问到了这样一个练习,我索性将代码贴到这里,下次须要的朋友能够来这里看。
用到知识点:数组、集合、IO流
问题描写叙述:在例如以下图所看到的的一个txt文件里读取数据到内存,然后统计列除过0的各个数字的个数(放入Map)并依照列的数据大小排序。
代码:
package com.test; import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeMap; public class Week {
private static List<int[]> readFile1(String fileName) {
List<int[]> list = new ArrayList<int[]>();
String line = "";
int[] arr;
FileReader fr = null;
BufferedReader br = null;
try {
File file = new File(fileName);
fr = new FileReader(file);
br = new BufferedReader(fr);
while (br.ready()) {
line = br.readLine();
String[] data = line.split(",");
arr = new int[data.length];
for (int j = 0; j < data.length; j++) {
arr[j] = Integer.parseInt(data[j]);
}
list.add(arr);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fr != null){
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return list;
} private static int[][] revertData(List<int[]> data) {
int maxCol = 0;
for (int i = 0; i < data.size(); i++) {
if (data.get(i).length > maxCol) {
maxCol = data.get(i).length;
}
} int[][] arrs = new int[maxCol][data.size()];
for (int i = 0; i < data.size(); i++) {
int[] arr = data.get(i);
for (int j = 0; j < arr.length; j++) {
arrs[j][i] = arr[j];
}
}
return arrs;
} private static void countKeyNum(int[][] arrs) {
TreeMap<Integer, Integer> map;
for (int i = 0; i < arrs.length; i++) {
map = new TreeMap<Integer, Integer>(new Comparator<Integer>() { @Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
});
for (int j = 0; j < arrs[i].length; j++) {
if (arrs[i][j] == 0)
continue;
if (map.containsKey(arrs[i][j])) {
map.put(arrs[i][j], map.get(arrs[i][j]) + 1);
} else {
map.put(arrs[i][j], 1);
}
}
System.out.println(map);
}
} public static void main(String args[]) {
List<int[]> data = readFile1("week.txt");
int[][] arrs = revertData(data);
countKeyNum(arrs);
} }
部分执行结果:
一个Java基础练习的更多相关文章
- 一天一个Java基础——泛型
这学期的新课——设计模式,由我仰慕已久的老师传授,可惜思维过快,第一节就被老师挑中上去敲代码,自此在心里烙下了阴影,都是Java基础欠下的债 这学期的新课——算法设计与分析,虽老师不爱与同学互动式的讲 ...
- 一天一个Java基础——通过异常处理错误
<Thinking in Java>上对这章的讲解不少,可见重要性,学习和总结一些主要的记录下来. 一.创建自定义异常 package Exception; class SimpleExc ...
- 一天一个Java基础——数组
一天一个变成了几天一个,最近接受的新东西太多.太快,有好多需要blog的但没有时间,这些基础知识应该是要深挖并好好研究的,不应该每次都草草了事,只看个皮毛. 数组: JVM将数组存储在一个称为堆(he ...
- 一天一个Java基础——对象和类
1.在Java中你所做的全部工作就是定义类,产生那些类的对象,以及发送消息给这些对象 2.可以在类中设置两种类型的元素:字段(也被称作数据成员)和方法(也被称作成员函数) 3.字段可以是任何类型的对象 ...
- 一天一个Java基础——序列化
1.概念 Java的“对象序列化”能将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象的时候,能把这些byte数据恢复出来,并据此重新构建那个对象. 对象序列化能实 ...
- 一天一个Java基础——反射
1.概念 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力 Java中的反射是一种强大的工具,它能够创建灵活的代码,这些代码可以运行时装配,无须在组件之间进行链接 反射允许在编写与执行 ...
- 每天一个java基础知识--static
内存总体一共分为了 4个部分(stack segment.heap segment.code segment.data segment) 当我们在程序中,申明一个局部变量的时候,此变量就存放在了 st ...
- 一天一个Java基础——排序
插入排序 直接插入排序: 当插入第i个数据元素k时,由前i-1个数据元素组成已排序的数据序列,将k与数据序列中各数据元素依次进行比较后,插入到数据序列的适当位置,使得插入后的数据序列仍是排序的. 直接 ...
- Java基础面试知识点总结
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
随机推荐
- Windows下VS2013+Caffe无GPU配置
Windows版本的caffe工具包下载地址: 点击打开链接 1. 将下载的caffe-master.zip解压到 D:\Software\Caffe 文件夹下,把 D:\Software\Caffe ...
- 数据结构之fhq-treap
本文内容部分转自某大佬博客:https://blog.csdn.net/CABI_ZGX/article/details/79963427 例题:https://www.luogu.org/probl ...
- BZOJ 3680 模拟退火
思路: 退火就好了-- 1.强烈建议题目名称改为"吊打出题人" 2.这种题放oj上啥心态...-–hzwer 二分TLE和WA 终于AC了-- //By SiriusRen #in ...
- java 类和对象10
创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方法初始化x和y.创建类主类A来测试它. public class Print { private int x; p ...
- Storm Zookeeper
本文记录了storm 1.1.0 在zookeeper中保存的信息. 下面的图是在[4]的基础上进行修改的. /-storm -- storm在zookeeper上的根目录 | |-/assignme ...
- RecordAccumulator 1
介绍 前面讲过producer会将数据保存在RecordAccumulator中,并通过Sender发送数据.RecordAccumulator 就相当于一个队列保存着那些准备发送到server的数据 ...
- 手把手教你进行R语言的安装及安装过程中相关问题解决方案
这篇文章旨在为R语言的新手铺砖引路,行文相对基础,希望对在R语言安装上有问题的小伙伴提供帮助和指引.一.什么是 R 语言R 编程语言被广泛应用在统计科学和商业领域. 在各种编程语言排名中 R 语言的排 ...
- 洛谷3961 [TJOI2013]黄金矿工
题目描述 小A最近迷上了在上课时玩<黄金矿工>这款游戏.为了避免被老师发现,他必须小心翼翼,因此他总是输.在输掉自己所有的金币后,他向你求助.每个黄金可以看做一个点(没有体积).现在给出你 ...
- tt
Oracle报错处理 1.oem启动报错 解决方案:
- 【Codeforces Round #423 (Div. 2) B】Black Square
[Link]:http://codeforces.com/contest/828/problem/B [Description] 给你一个n*m的格子; 里面包含B和W两种颜色的格子; 让你在这个格子 ...