【友情链接】———–—>Java中的各种集合大汇总,学习整理
【友情链接】————–> Collection集合
【友情链接】————–> ArrayList集合及其常用功能
【友情链接】————–> ArrayList应用<两大案例的数据分组聚合>
【友情链接】———–—> Iterator迭代器
【友情链接】———–—>List集合 & LinkedList集合 & Vector集合
【友情链接】———–—>set集合 & HashSet集合 & 哈希值& LinkedHashSet集合 &TreeSet集合&可变参数
【友情链接】———–—>Map集合 & HashMap集合 & LinkedHashMap集合&HashTable集合
【友情链接】———–—>Collections类集合工具类
在ArrayList应用之前,我们要先了解一个方法`
public boolean contains()
用于判断集合中是否存在此元素,不存在返回false,存在返回true
举个例子,看代码:
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("b");
list.add("c");
list.add("d");
list.add("a");
list.add("b");
ArrayList<String> group = new ArrayList<>();
boolean a = list.contains("e");
System.out.println("list集合中有无元素e\t返回值:"+a);
System.out.println("list集合:\t"+list);
//分组
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
boolean contains = group.contains(s);
if(!contains){
group.add(s);
}
}
System.out.println(group);
}
【应用案例一】
现有1000条学生数据,要求利用集合ArrayList及其相关方法,对数据进行处理,统计出各班各有多少学生?
源码如下,带分析步骤
import java.util.ArrayList;
public class student {
public static void main(String[] args) {
ArrayList<java.lang.String> list = new ArrayList<>();
list.add("1500100001,施笑槐,22,女,文科六班");
list.add("1500100002,吕金鹏,24,男,文科六班");
list.add("1500100003,单乐蕊,22,女,理科六班");
list.add("1500100004,葛德曜,24,男,理科三班");
list.add("1500100005,宣谷芹,22,女,理科五班");
list.add("1500100006,边昂雄,21,男,理科二班");
list.add("1500100007,尚孤风,23,女,文科六班");
list.add("1500100008,符半双,22,女,理科六班");
list.add("1500100009,沈德昌,21,男,理科一班");
list.add("1500100010,羿彦昌,23,男,理科六班");
list.add("1500100011,宰运华,21,男,理科三班");
list.add("1500100012,梁易槐,21,女,理科一班");
list.add("1500100013,逯君昊,24,男,文科二班");
list.add("1500100014,羿旭炎,23,男,理科五班");
list.add("1500100015,宦怀绿,21,女,理科一班");
list.add("1500100016,潘访烟,23,女,文科一班");
list.add("1500100017,高芷天,21,女,理科五班");
list.add("1500100018,骆怜雪,21,女,文科六班");
list.add("1500100019,娄曦之,24,男,理科三班");
list.add("1500100020,杭振凯,23,男,理科四班");
list.add("1500100021,连鸿晖,22,男,理科六班");
list.add("1500100022,薄运珧,23,男,文科四班");
list.add("1500100023,东鸿畴,23,男,理科二班");
list.add("1500100024,湛慕卉,22,女,文科二班");
list.add("1500100025,翁飞昂,22,男,文科四班");
list.add("1500100026,向鹏池,21,男,理科四班");
list.add("1500100027,路辰锟,21,男,文科四班");
list.add("1500100028,幸浩邈,24,男,理科五班");
list.add("1500100029,滕旭炎,21,男,理科二班");
list.add("1500100030,姚依丝,21,女,理科六班");
list.add("1500100031,麻智刚,24,男,文科六班");
list.add("1500100032,雍静枫,24,女,文科二班");
list.add("1500100033,桑昆峰,24,男,理科三班");
list.add("1500100034,薛鸿朗,24,男,理科五班");
list.add("1500100035,包瀚玥,24,男,理科四班");
list.add("1500100036,阮旭炎,22,男,文科二班");
list.add("1500100037,顾向松,22,女,文科一班");
list.add("1500100038,蓟振强,21,男,理科五班");
list.add("1500100039,窦孤风,22,女,文科六班");
list.add("1500100040,纪映之,24,女,文科四班");
list.add("1500100041,傅景天,24,男,理科四班");
list.add("1500100042,麻旭尧,24,男,文科四班");
list.add("1500100043,晏昆鹏,24,男,理科六班");
list.add("1500100044,田天风,24,女,文科二班");
list.add("1500100045,仇运晟,21,男,理科一班");
list.add("1500100046,靳香巧,22,女,理科五班");
list.add("1500100047,秋旭尧,23,男,文科六班");
list.add("1500100048,从子辰,21,男,理科六班");
list.add("1500100049,籍涵煦,21,男,理科六班");
list.add("1500100050,方小蕾,22,女,文科五班");
list.add("1500100051,江寄容,24,女,文科五班");
list.add("1500100052,居初兰,23,女,理科二班");
list.add("1500100053,扈鸿朗,21,男,文科五班");
list.add("1500100054,梅元容,21,女,理科二班");
list.add("1500100055,卫鸿熙,24,男,文科一班");
list.add("1500100056,古鸿信,21,男,理科二班");
list.add("1500100057,经沛白,24,女,文科四班");
list.add("1500100058,薄谷蕊,23,女,理科三班");
list.add("1500100059,席昌燎,24,男,理科二班");
list.add("1500100060,阮迎荷,24,女,文科四班");
list.add("1500100061,路紫萱,21,女,文科四班");
list.add("1500100062,空芷荷,24,女,文科二班");
list.add("1500100063,申半双,24,女,文科四班");
list.add("1500100064,汲辰沛,22,男,理科六班");
list.add("1500100065,蓬昂雄,22,男,理科二班");
list.add("1500100066,惠耘涛,22,男,文科三班");
list.add("1500100067,广浦泽,22,男,文科五班");
list.add("1500100068,宣南蓉,23,女,理科一班");
list.add("1500100069,束采波,22,女,文科一班");
list.add("1500100070,濮佑运,22,男,理科一班");
list.add("1500100071,祖昌勋,22,男,理科四班");
list.add("1500100072,段怀梦,23,女,理科二班");
list.add("1500100073,滕旭炎,23,男,文科二班");
list.add("1500100074,史鹏煊,22,男,理科六班");
list.add("1500100075,谭春蕾,21,女,文科二班");
list.add("1500100076,竺乐蓉,23,女,理科五班");
list.add("1500100077,钮元蝶,24,女,理科三班");
list.add("1500100078,干安珊,24,女,理科四班");
list.add("1500100079,曾辰宇,22,男,文科六班");
list.add("1500100080,巫景彰,21,男,理科五班");
list.add("1500100081,嵇平安,21,女,理科三班");
list.add("1500100082,凌思菱,22,女,文科一班");
list.add("1500100083,雍惜玉,22,女,文科二班");
list.add("1500100084,应景平,22,男,理科三班");
list.add("1500100085,彭旭东,21,男,文科二班");
list.add("1500100086,祖昆锐,22,男,理科一班");
list.add("1500100087,童鸿禧,23,男,理科五班");
list.add("1500100088,田德明,21,男,文科三班");
list.add("1500100089,蒙依丝,22,女,文科五班");
list.add("1500100090,富寄风,21,女,文科五班");
list.add("1500100091,蔺水风,22,女,文科一班");
list.add("1500100092,竺惜玉,21,女,理科四班");
list.add("1500100093,裴依秋,22,女,文科二班");
list.add("1500100094,韩醉柳,22,女,文科一班");
list.add("1500100095,尹宛秋,23,女,文科三班");
list.add("1500100096,沈曜瑞,21,男,理科三班");
list.add("1500100097,叶德昌,24,男,文科二班");
list.add("1500100098,卞俊晖,22,男,理科一班");
list.add("1500100099,成曜文,21,男,文科五班");
list.add("1500100100,宁昊磊,22,男,文科六班");
list.add("1500100101,计又琴,23,女,文科一班");
list.add("1500100102,洪天风,24,女,文科五班");
list.add("1500100103,宣昆皓,21,男,理科五班");
list.add("1500100104,咸冰蝶,23,女,理科二班");
list.add("1500100105,寿白亦,22,女,文科五班");
list.add("1500100106,仲怀莲,22,女,文科四班");
list.add("1500100107,能昆明,23,男,理科五班");
list.add("1500100108,伏易云,24,女,理科五班");
list.add("1500100109,从振强,24,男,文科三班");
list.add("1500100110,牛晨朗,22,男,文科六班");
list.add("1500100111,邴惜芹,22,女,理科三班");
list.add("1500100112,祖昆琦,21,男,理科三班");
list.add("1500100113,羿思真,24,女,理科三班");
list.add("1500100114,钮笑柳,24,女,理科四班");
list.add("1500100115,益耘豪,24,男,理科四班");
list.add("1500100116,文元蝶,21,女,文科四班");
list.add("1500100117,隗寄南,21,女,理科四班");
list.add("1500100118,蔺昆宇,21,男,文科一班");
list.add("1500100119,臧云天,21,男,文科四班");
list.add("1500100120,桓浩邈,24,男,文科三班");
list.add("1500100121,张雪卉,22,女,文科一班");
list.add("1500100122,乔书雁,23,女,理科四班");
list.add("1500100123,厍寄琴,23,女,理科四班");
list.add("1500100124,冯绿蝶,22,女,理科四班");
list.add("1500100125,蒙涵衍,23,男,文科一班");
list.add("1500100126,侯昌燎,21,男,理科六班");
list.add("1500100127,罗芷卉,21,女,文科二班");
list.add("1500100128,巫鸿哲,24,男,文科一班");
list.add("1500100129,容寄南,23,女,文科三班");
list.add("1500100130,宁怀莲,21,女,理科四班");
list.add("1500100131,胡昊明,22,男,文科六班");
list.add("1500100132,曾安寒,22,女,文科五班");
list.add("1500100133,钱向山,24,女,理科二班");
list.add("1500100134,计宣朗,22,男,理科四班");
list.add("1500100135,庾振海,21,男,理科四班");
list.add("1500100136,黎昆鹏,22,男,文科六班");
list.add("1500100137,宣向山,22,女,理科四班");
list.add("1500100138,栾鸿信,22,男,文科二班");
list.add("1500100139,左代萱,24,女,文科三班");
list.add("1500100140,郁运发,24,男,文科六班");
list.add("1500100141,谢昌勋,23,男,理科六班");
list.add("1500100142,闵华晖,21,男,文科一班");
list.add("1500100143,匡德明,22,男,文科五班");
list.add("1500100144,通冰夏,22,女,文科六班");
list.add("1500100145,殴飞昂,24,男,理科五班");
list.add("1500100146,于向南,23,女,理科三班");
list.add("1500100147,翁鸿晖,23,男,理科四班");
list.add("1500100148,蒋震博,23,男,文科六班");
list.add("1500100149,仇辰锟,21,男,理科一班");
list.add("1500100150,牧星睿,24,男,文科四班");
list.add("1500100151,诸碧萱,22,女,理科六班");
list.add("1500100152,衡从安,21,女,文科五班");
list.add("1500100153,孔涵蕾,21,女,文科四班");
list.add("1500100154,容昊然,22,男,文科五班");
list.add("1500100155,广高旻,24,男,文科四班");
list.add("1500100156,姚星爵,23,男,理科五班");
list.add("1500100157,孙映冬,24,女,理科一班");
list.add("1500100158,葛惜梦,24,女,理科三班");
list.add("1500100159,寇鸿朗,23,男,文科四班");
list.add("1500100160,云冰真,24,女,文科三班");
list.add("1500100161,蒋谷梦,23,女,理科五班");
list.add("1500100162,林昆卉,24,男,文科四班");
list.add("1500100163,胥凡白,21,女,理科五班");
list.add("1500100164,封昂杰,21,男,理科六班");
list.add("1500100165,姜昆皓,22,男,文科一班");
list.add("1500100166,车怀曼,24,女,文科四班");
list.add("1500100167,裘昌淼,23,男,理科六班");
list.add("1500100168,巫辰皓,21,男,理科六班");
list.add("1500100169,印维运,23,男,理科六班");
list.add("1500100170,夏鸿畅,21,男,文科四班");
list.add("1500100171,乜鸿福,24,男,理科一班");
list.add("1500100172,施昊东,22,男,理科三班");
list.add("1500100173,连采波,24,女,文科六班");
list.add("1500100174,茅香薇,22,女,理科六班");
list.add("1500100175,邰凡灵,21,女,理科一班");
list.add("1500100176,施元容,21,女,文科六班");
list.add("1500100177,樊若翠,23,女,文科五班");
list.add("1500100178,杜芷天,21,女,文科一班");
list.add("1500100179,阮惜珊,23,女,理科四班");
list.add("1500100180,古金鹏,24,男,理科一班");
list.add("1500100181,巩怀莲,24,女,理科四班");
list.add("1500100182,仲秋巧,23,女,文科五班");
list.add("1500100183,卫若枫,24,女,理科六班");
list.add("1500100184,夔寻巧,24,女,理科三班");
list.add("1500100185,杭梦蕊,24,女,理科三班");
list.add("1500100186,昌元冬,22,女,文科五班");
list.add("1500100187,武静珊,23,女,理科六班");
list.add("1500100188,霍元冬,21,女,理科五班");
list.add("1500100189,曾觅云,24,女,理科二班");
list.add("1500100190,韩运升,24,男,理科四班");
list.add("1500100191,益惜蕊,23,女,理科四班");
list.add("1500100192,暨君昊,21,男,文科二班");
list.add("1500100193,景寄文,21,女,文科四班");
list.add("1500100194,滕代萱,23,女,理科四班");
list.add("1500100195,凌昆锐,21,男,文科六班");
list.add("1500100196,汤浩博,21,男,文科三班");
list.add("1500100197,郦元容,24,女,理科三班");
list.add("1500100198,于景行,21,男,理科四班");
list.add("1500100199,陆慕易,24,女,文科三班");
list.add("1500100200,丁香巧,24,女,理科一班");
list.add("1500100201,骆鸿卓,23,男,文科六班");
list.add("1500100202,干曜瑞,23,男,文科三班");
list.add("1500100203,董旭彬,21,男,理科六班");
list.add("1500100204,屠昆纬,24,男,理科六班");
list.add("1500100205,池景明,24,男,理科六班");
list.add("1500100206,暴鹏池,22,男,文科六班");
list.add("1500100207,卜幼南,21,女,文科二班");
list.add("1500100208,曹曼岚,24,女,理科四班");
list.add("1500100209,俞海逸,23,男,文科二班");
list.add("1500100210,苏代萱,24,女,理科四班");
list.add("1500100211,米绮晴,21,女,理科一班");
list.add("1500100212,单旭鹏,23,男,理科二班");
list.add("1500100213,赵又绿,23,女,理科五班");
list.add("1500100214,嵇运盛,23,男,理科三班");
list.add("1500100215,费华晖,24,男,理科六班");
list.add("1500100216,都凡梅,22,女,理科五班");
list.add("1500100217,弘寄南,21,女,文科一班");
list.add("1500100218,嵇幻巧,24,女,理科四班");
list.add("1500100219,万青旋,23,女,理科六班");
list.add("1500100220,向安寒,24,女,文科五班");
list.add("1500100221,费智伟,23,男,理科六班");
list.add("1500100222,赵嘉澍,22,男,文科六班");
list.add("1500100223,殷醉波,21,女,文科二班");
list.add("1500100224,裴昂熙,24,男,理科六班");
list.add("1500100225,安振平,22,男,理科一班");
list.add("1500100226,应金鹏,24,男,理科四班");
list.add("1500100227,宗振凯,21,男,文科二班");
list.add("1500100228,孙鑫鹏,22,男,理科六班");
list.add("1500100229,逯冬萱,22,女,文科三班");
list.add("1500100230,扶问寒,22,女,理科三班");
list.add("1500100231,桂痴安,22,女,文科三班");
list.add("1500100232,石寄琴,21,女,文科一班");
list.add("1500100233,师昆鹏,24,男,理科六班");
list.add("1500100234,广智杰,22,男,理科二班");
list.add("1500100235,沈香巧,24,女,理科一班");
list.add("1500100236,舄以山,23,女,文科二班");
list.add("1500100237,贺辰钊,21,男,理科五班");
list.add("1500100238,隗鸿志,21,男,文科五班");
list.add("1500100239,余向南,21,女,文科四班");
list.add("1500100240,车惜玉,23,女,理科三班");
list.add("1500100241,石怀绿,21,女,文科四班");
list.add("1500100242,舒智阳,21,男,理科六班");
list.add("1500100243,谢元柏,22,女,理科五班");
list.add("1500100244,劳若枫,22,女,文科三班");
list.add("1500100245,苏旭彬,21,男,文科六班");
list.add("1500100246,丁运凡,22,男,文科二班");
list.add("1500100247,戈晗日,23,男,文科六班");
list.add("1500100248,盛学智,23,男,文科二班");
list.add("1500100249,扈振翱,24,男,文科三班");
list.add("1500100250,敖景明,23,男,文科五班");
list.add("1500100251,曹德昌,24,男,理科四班");
//数据太多,有删减,
System.out.println(list);
//1.分组
//创建一个新的ArrayList,接收分组后元素
ArrayList<String> group = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
//对list集合中每条字符串数据切分
String[] split = list.get(i).split(",");
//判读数据中的每一条是否合理,即是否有缺失(少)或缺省,不合理跳出循环
if(split.length<5 || split[4]==null ){
continue;
}
//判断group中是否有split[4],无则添加
if(!group.contains(split[4])){
group.add(split[4]);
}
}
//打印分组后group集合
System.out.println(group);
//2.聚合:针对班级统计个数
for (int i = 0; i < group.size(); i++) {
int count=0;//统计个数
for (int j = 0; j < list.size(); j++) {
String[] split = list.get(j).split(",");
if(split[4].equals(group.get(i))){
count++;
}
}
System.out.println(group.get(i)+"\t : \t"+count+"人");
}
}
}
最终结果如下图:
【应用案例二】
现有学生信息数据10条,和学生成绩数据60条,要求求出学生各科总和并添加到学生信息数据中.
源码如下,有分析注释:
import java.util.ArrayList;
public class studentscore {
public static void main(String[] args) {
// 学生信息
ArrayList<String> list = new ArrayList<>();
list.add("1500100001,施笑槐,22,女,文科六班");
list.add("1500100002,吕金鹏,24,男,文科六班");
list.add("1500100003,单乐蕊,22,女,理科六班");
list.add("1500100004,葛德曜,24,男,理科三班");
list.add("1500100005,宣谷芹,22,女,理科五班");
list.add("1500100006,边昂雄,21,男,理科二班");
list.add("1500100007,尚孤风,23,女,文科六班");
list.add("1500100008,符半双,22,女,理科六班");
list.add("1500100009,沈德昌,21,男,理科一班");
list.add("1500100010,羿彦昌,23,男,理科六班");
System.out.println("测试学生信息集合");
System.out.println(list);//测试学生信息集合
// 学生成绩信息
ArrayList<String> studentscore = new ArrayList<>();
studentscore.add("1500100001,1000001,98");
studentscore.add("1500100001,1000002,5");
studentscore.add("1500100001,1000003,137");
studentscore.add("1500100001,1000004,29");
studentscore.add("1500100001,1000005,85");
studentscore.add("1500100001,1000006,52");
studentscore.add("1500100002,1000001,139");
studentscore.add("1500100002,1000002,102");
studentscore.add("1500100002,1000003,44");
studentscore.add("1500100002,1000004,18");
studentscore.add("1500100002,1000005,46");
studentscore.add("1500100002,1000006,91");
studentscore.add("1500100003,1000001,48");
studentscore.add("1500100003,1000002,132");
studentscore.add("1500100003,1000003,41");
studentscore.add("1500100003,1000007,32");
studentscore.add("1500100003,1000008,7");
studentscore.add("1500100003,1000009,99");
studentscore.add("1500100004,1000001,147");
studentscore.add("1500100004,1000002,69");
studentscore.add("1500100004,1000003,37");
studentscore.add("1500100004,1000007,87");
studentscore.add("1500100004,1000008,21");
studentscore.add("1500100004,1000009,60");
studentscore.add("1500100005,1000001,105");
studentscore.add("1500100005,1000002,105");
studentscore.add("1500100005,1000003,30");
studentscore.add("1500100005,1000007,68");
studentscore.add("1500100005,1000008,38");
studentscore.add("1500100005,1000009,49");
studentscore.add("1500100006,1000001,87");
studentscore.add("1500100006,1000002,98");
studentscore.add("1500100006,1000003,55");
studentscore.add("1500100006,1000007,44");
studentscore.add("1500100006,1000008,1");
studentscore.add("1500100006,1000009,29");
studentscore.add("1500100007,1000001,102");
studentscore.add("1500100007,1000002,149");
studentscore.add("1500100007,1000003,83");
studentscore.add("1500100007,1000004,21");
studentscore.add("1500100007,1000005,25");
studentscore.add("1500100007,1000006,38");
studentscore.add("1500100008,1000001,5");
studentscore.add("1500100008,1000002,129");
studentscore.add("1500100008,1000003,110");
studentscore.add("1500100008,1000007,47");
studentscore.add("1500100008,1000008,40");
studentscore.add("1500100008,1000009,32");
studentscore.add("1500100009,1000001,65");
studentscore.add("1500100009,1000002,71");
studentscore.add("1500100009,1000003,38");
studentscore.add("1500100009,1000007,57");
studentscore.add("1500100009,1000008,17");
studentscore.add("1500100009,1000009,3");
studentscore.add("1500100010,1000001,98");
studentscore.add("1500100010,1000002,142");
studentscore.add("1500100010,1000003,50");
studentscore.add("1500100010,1000007,6");
studentscore.add("1500100010,1000008,44");
studentscore.add("1500100010,1000009,62");
System.out.println("测试成绩集合");
System.out.println(studentscore);//测试成绩集合
//创建分组集合
ArrayList<String> group = new ArrayList<>();
//创建一个新的集合存放最终计算后的学生成绩
ArrayList<String> newscore = new ArrayList<>();
// 1.先分组 studenscore
for (int i = 0; i < studentscore.size(); i++) {
String[] split = studentscore.get(i).split(",");
String sId = split[0];//取i的学号
//添加学号到分组group
if (!group.contains(sId)) {
group.add(sId);
}
}
System.out.println("测试分组结果");
System.out.println(group);//测试分组结果
//2.完成分组,求总分,拼接总分
for (int j = 0; j < group.size(); j++) {
//取第j个学生学号,
String gsId = group.get(j);
int sum = 0;//总分
//求j的总分
for (int i = 0; i < studentscore.size(); i++) {
String[] split = studentscore.get(i).split(",");
//考虑没有成绩的情况
if (split.length<3 || split[2]==null){
continue;
}
String sId = split[0];//取i的学号
String score = split[2];//取i的成绩
int sc = Integer.parseInt(score);//将string类型成绩转换为int
//判断学号求总分
if (gsId.equals(sId)) {
sum += sc;
}
}
//3.拼接总分给group
String s = group.get(j) + "," + sum;//拼接总分
// System.out.println(s);//测试拼接结果
newscore.add(s);
}
//测试成绩拼接结果
System.out.println("拼接总成绩前的group");
System.out.println(group);//拼接前
System.out.println("拼接总成绩后的newscore");
System.out.println(newscore);
//4.拼接总分给list
ArrayList<String> newstudent = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
String[] split = list.get(i).split(",");
for (int j = 0; j < newscore.size(); j++) {
String[] split1 = newscore.get(j).split(",");
if (split1[0].equals(split[0]) ){
String s =list.get(i)+","+split1[1];
newstudent.add(s);
}
}
}
System.out.println("学生信息拼接结果");
System.out.println(newstudent);
}
}
最终结果;