import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class DealCVSFile {
public static void main(String args[]){
String fileLocation = "D:/testCSV.csv";
try {
BufferedReader bf = new BufferedReader(
new InputStreamReader(new FileInputStream(fileLocation)));
String rowStr = "";
String rowStrSplit[] = null;
Map pMap = new HashMap();
String removeQue = "";
while((rowStr = bf.readLine())!=null){
//文件读取时包括了前后的字符串,类似于: "zhangsan,88888"
removeQue = rowStr.substring(1,rowStr.length()-2);
//rowStrSplit = rowStr.split(",");
pMap.put(removeQue, removeQue);//
}
String inputName="zhaoliu";
List<String>numberList = getNamesByNumber(inputName,pMap,1);
List maxCont = new ArrayList();
//maxCont.add(0, "");不知道为什么,多次调用这样的方法时,元素不断增加,而不是覆盖
String temp="";
int max = 1;
for(Iterator itNum = numberList.iterator();itNum.hasNext();){
temp = (String) itNum.next();
List<String> innerNum = getNamesByNumber(temp,pMap,0);
int size = innerNum.size();
if(size>=max){
maxCont.clear();//因为add(index,element)方法不符合预期,所以这里每次保存最新的
maxCont.add(temp);
maxCont.add(innerNum);
max = size;
}
}
System.out.print(maxCont);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
}
}
/**
* flag=0表示通过number找name,flag=1表示通过name找number
* @param param
* @param m
* @param flag
* @return
*/
public static List getNamesByNumber(String param,Map m,int flag){
List<String> l = new ArrayList<String>();
for(Iterator it = m.entrySet().iterator();it.hasNext();){
Map.Entry<String, String> et = (Entry<String, String>) it.next();
if(0==flag){
if(param.equals(et.getValue().split(",")[1])){
l.add(et.getKey().split(",")[0]);
}
}else if(1==flag){
if(param.equals(et.getKey().split(",")[0])){
l.add(et.getKey().split(",")[1]);
}
}
}
return l;
}
}
相关推荐
这篇博文将深入探讨Java集合框架,包括其基本概念、常见类、接口和实现方式,以及如何进行有效的集合操作。以下是对这些知识点的详细说明: 1. **集合框架**: Java集合框架是一组接口和类,它们提供了在程序中...
首先,让我们了解一下基本的集合操作: 1. **添加元素**:使用`add()`方法向集合中添加一个整数。如果该元素已经存在,`add()`方法通常不会做任何操作。 ```java Set<Integer> set = new HashSet(); set.add(1); ...
在阅读《有关集合的操作》这篇博文时,你可能会找到更多关于特定编程语言中集合操作的实用技巧和示例。作者通过源码分析和工具使用,深入讲解了集合操作的实现细节,对于提升编程技能非常有帮助。记住,不断学习和...
这篇学习笔记将深入探讨Java集合框架的基础概念、主要类库以及常见应用场景。 首先,Java集合框架分为两种基本类型:List(列表)和Set(集)。List接口代表有序的集合,允许重复元素,如ArrayList和LinkedList;而...
集合的对称差集是集合操作中的一种,用于找出两个或多个集合中独有的元素。Python提供了`symmetric_difference()`方法和`^`操作符两种方式来实现这一功能。在处理多个集合时,可以链式使用这些操作来得到最终的对称...
在本篇中,我们将深入探讨Java集合的排序机制以及集合类的详细使用。 首先,我们来了解一下Java集合的基本分类。Java集合主要分为两大类:List(列表)和Set(集)。List是一个有序的集合,允许元素重复,并且可以...
此外,Stream API的引入为集合操作提供了更简洁的函数式编程方式。 7. **并发处理**:在多线程环境中,Concurrent包提供了线程安全的集合实现,如ConcurrentHashMap、CopyOnWriteArrayList和CopyOnWriteArraySet。...
这篇文档是关于一个数据结构课程设计项目,目标是创建一个程序来演示集合的并、交和差运算。项目的关键在于理解和实现集合的概念以及相关的运算,同时利用数据结构,特别是有序链表来存储和操作集合。 首先,集合的...
- LinkedHashSet:在HashSet的基础上增加了保持插入顺序的功能,使得遍历集合时元素按照添加的顺序出现。 - TreeSet:基于红黑树(Red-Black Tree)实现,元素按自然排序或自定义比较器进行排序。插入、删除和...
在Python中,集合由大括号{}或set()函数创建,支持常见的集合操作,如并集、交集和差集。集合的特点包括: 1. **唯一性**:集合中的每个元素都是唯一的,不允许重复。 2. **无序性**:集合中的元素没有特定的顺序。...
这篇博客文章可能详细解释了如何创建、操作和理解Java集合类的基本概念。 首先,Java集合框架主要包括接口和实现这些接口的类。接口如`List`, `Set`, `Queue`, `Map`等,定义了集合的行为和操作。而`ArrayList`, `...
本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java 5引入的泛型特性。 首先,让我们了解一下`java.lang.Class`。`Class`类在Java中扮演着特殊的角色,它不仅是一个普通类,而且是用于获取...
`Collection`接口提供了基本的集合操作,如添加(add)、删除(remove)、判断是否包含(contains)等方法。此外,`addAll`和`removeAll`等方法允许进行集合间操作。 #### 迭代器 迭代器(Iterator)是用于遍历...
5. **List**:List是泛型集合,基于动态数组实现,支持快速的索引访问和基本的集合操作,如添加、删除、排序等。 6. **Stack与Queue**:Stack是后进先出(LIFO)的数据结构,常用于实现函数调用栈或临时存储操作。...
本篇文章将总结集合框架的基础知识,包括主要接口、实现类以及底层实现原理。 1. 集合框架接口 - **Collection接口**:作为所有集合类的父接口,提供了基本的操作方法,如add、remove等。 - **List接口**:继承自...
在IT领域,集合论是数学基础的重要组成部分,它为我们提供了描述和操作数学对象的基本框架。简单逻辑,也称为命题逻辑,是形式逻辑的一个分支,用于分析和表达逻辑关系。本篇将围绕“集合与简单逻辑”这一主题,深入...
Java集合框架是Java编程语言中一个极其重要的概念,它提供了一组高效的数据结构和算法,用于存储和操作对象。集合框架的基本接口构成了整个框架的基础,它们定义了各种集合类型的行为和操作。 1. **集合Collection*...
本篇文章提供了一种基于精确算法的方法来解决最小集合覆盖问题,并通过MPI(Message Passing Interface,消息传递接口)实现了算法的并行化处理,极大地提高了计算效率。 具体的精确算法实现过程可以分为以下几个...
在本篇文章中,我们将深入探讨Java集合框架中的主要接口和类,以及它们之间的区别。 首先,Java集合框架的核心接口包括`Collection`、`List`、`Set`和`Map`。`Collection`是最基本的接口,它是所有单值容器的父接口...