今天在群里又有一个朋友问到了这样一个练习,我索性将代码贴到这里,下次须要的朋友能够来这里看。

用到知识点:数组、集合、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基础练习的更多相关文章

  1. 一天一个Java基础——泛型

    这学期的新课——设计模式,由我仰慕已久的老师传授,可惜思维过快,第一节就被老师挑中上去敲代码,自此在心里烙下了阴影,都是Java基础欠下的债 这学期的新课——算法设计与分析,虽老师不爱与同学互动式的讲 ...

  2. 一天一个Java基础——通过异常处理错误

    <Thinking in Java>上对这章的讲解不少,可见重要性,学习和总结一些主要的记录下来. 一.创建自定义异常 package Exception; class SimpleExc ...

  3. 一天一个Java基础——数组

    一天一个变成了几天一个,最近接受的新东西太多.太快,有好多需要blog的但没有时间,这些基础知识应该是要深挖并好好研究的,不应该每次都草草了事,只看个皮毛. 数组: JVM将数组存储在一个称为堆(he ...

  4. 一天一个Java基础——对象和类

    1.在Java中你所做的全部工作就是定义类,产生那些类的对象,以及发送消息给这些对象 2.可以在类中设置两种类型的元素:字段(也被称作数据成员)和方法(也被称作成员函数) 3.字段可以是任何类型的对象 ...

  5. 一天一个Java基础——序列化

    1.概念 Java的“对象序列化”能将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象的时候,能把这些byte数据恢复出来,并据此重新构建那个对象. 对象序列化能实 ...

  6. 一天一个Java基础——反射

    1.概念 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力 Java中的反射是一种强大的工具,它能够创建灵活的代码,这些代码可以运行时装配,无须在组件之间进行链接 反射允许在编写与执行 ...

  7. 每天一个java基础知识--static

    内存总体一共分为了 4个部分(stack segment.heap segment.code segment.data segment) 当我们在程序中,申明一个局部变量的时候,此变量就存放在了 st ...

  8. 一天一个Java基础——排序

    插入排序 直接插入排序: 当插入第i个数据元素k时,由前i-1个数据元素组成已排序的数据序列,将k与数据序列中各数据元素依次进行比较后,插入到数据序列的适当位置,使得插入后的数据序列仍是排序的. 直接 ...

  9. Java基础面试知识点总结

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

随机推荐

  1. TYVJ 1340 折半暴搜+二分

    思路: 1. 这 题 不卡常过不去啊-- (先加一个random_shuffle) 首先 我们可以折半 搜这一半可以到达的重量 sort一遍 然后搜另一半 对于路程中每一个解 我们可以二分前一半中加这 ...

  2. 继承—Monkey

    public class Monkey { public void Monkey(String s){ } public void speak(){ System.out.println(" ...

  3. EasyUI 之 DataGrid利用用拉姆达表达式实现分页查询

      首先,我们在DataGrid的URL中加上我们要查询的条件:查询用户名不是“呵呵”的所有用户. <div> <table id="dg" class=&quo ...

  4. vue的鼠标移入和移出

    vue的鼠标移入和移出 需求(鼠标到预约二维码显示,预约添加背景色) 实现 <!--html部分--> <ul class="person_list"> / ...

  5. Snail—UI学习之导航视图控制器UINavigationController(系统)

    背景 有一个根视图控制器 然后跳转到第一个界面  第一个界面能够返回到根视图 也能够跳转到第二个视图 第二个视图能够直接返回到根视图 新建三个ViewController    RootViewCon ...

  6. 将IP表存入SQL里的程序

    将IP表存入SQL里的程序 写得比較粗糙,另一点错误,只是能达到效果.请大家測试  create.asp  ---------------------------------------------- ...

  7. [Java开发之路](6)File类的使用

    1. 构造方法 构造方法 描写叙述 File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建一个新的文件实例. File(String parent , String ...

  8. 在Mac OS X上安装使用lazarus 1.6.4

    一直觉得delphi的OO做得比C++还完善, 但如今日落西真是让人感到唏嘘,  这并不意味着delphi比C++差, 它的创始人被微软挖墙脚后创造了C#系列开发工具, 设计理念大部分与Delphi相 ...

  9. 流水线技术原理和Verilog HDL实现

    所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时 ...

  10. Id选择器和Class选择器

    http://www.runoob.com/css/css-id-class.html http://www.w3school.com.cn/css/css_syntax_id_selector.as ...