【java开发系列】—— 集合使用方法

前言   在java中提供给我们了一些类似C++泛型的简单集合,list,set,map等。这里,简单介绍一下这些集合容器的使用方法,以及复杂对象元素的自定义排序。

  首先看一下集合的框架图:

  由于collection也继承了Iterator和comparable接口,因此我们可以使用Iterator来遍历元素,也可以通过自定义compareTo函数来重新编写自己的排序。

  List

 1 package testCollection;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Iterator;
 5 import java.util.List;
 6 
 7 public class testList {
 8     public static void main(String[] args){
 9         List list = new ArrayList();
10         list.add("test1");
11         list.add("test2");
12         list.add("test3");
13         
14         System.out.println("out by for!");
15         for(Object o : list){
16             System.out.println(o);
17         }
18         
19         System.out.println("out by iterator!");
20         Iterator iterator = list.iterator();
21         while(iterator.hasNext()){
22             String element = (String)iterator.next();
23             System.out.println(element);
24         }
25     }
26 }

运行结果

out by for!
test1
test2
test3
out by iterator!
test1
test2
test3

Set,如果遇到重复的元素,不会添加

 1 package testCollection;
 2 
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 
 6 public class testSet {
 7     public static void main(String[] args){
 8         Set set = new HashSet();//使用set一般都是用hashset,这个会快一些
 9         set.add("test1");
10         set.add("test2");
11         if(set.add("test2")){
12             System.out.println("add successful");
13         }else{
14             System.out.println("add failed");
15         }
16     }
17 }

运行结果

add failed

Map

 1 package testCollection;
 2 
 3 import java.util.HashMap;
 4 import java.util.Map;
 5 import java.util.Set;
 6 
 7 public class testMap {
 8     public static void main(String[] args){
 9         Map map = new HashMap();
10         
11         map.put(1, "test1");
12         map.put(2, "test2");
13         
14         System.out.println("size "+map.size());
15         System.out.println(map.get(1));
16         
17         Set keys = map.keySet();
18         for(Object key : keys){
19             System.out.println(key);
20         }
21         
22         map.remove(2);
23         System.out.println("size "+map.size());
24     }
25 }

运行结果

size 2
test1
1
2
size 1

自定义排序函数

person类,继承Comparable接口,重载compareTo函数

 1 package testCollection;
 2 
 3 public class Person implements Comparable{
 4     private String name;
 5     private int age;
 6     public String getName() {
 7         return name;
 8     }
 9     public void setName(String name) {
10         this.name = name;
11     }
12     public int getAge() {
13         return age;
14     }
15     public void setAge(int age) {
16         this.age = age;
17     }
18     public Person(String name,int age){
19         this.name = name;
20         this.age = age;
21     }
22     @Override
23     public int compareTo(Object person) throws ClassCastException {
24         if(!(person instanceof Person)){
25             throw new ClassCastException("A Person perspected!");
26         }
27         int age = ((Person)person).getAge();
28         return this.age-age;
29     }
30 }

测试类

 1 package testCollection;
 2 
 3 import java.util.Arrays;
 4 
 5 public class testComparable {
 6     public static void main(String[] args){
 7         Person[] persons = new Person[4];
 8         persons[0] = new Person("test1",18);
 9         persons[1] = new Person("test2",20);
10         persons[2] = new Person("test3",15);
11         persons[3] = new Person("test4",19);
12         
13         System.out.println("before sorting!");
14         
15         for(Person p : persons){
16             System.out.println("name: "+p.getName()+" age: "+p.getAge());
17         }
18         
19         System.out.println("after sorting!");
20         Arrays.sort(persons);
21         for(Person p : persons){
22             System.out.println("name: "+p.getName()+" age: "+p.getAge());
23         }
24     }
25 }

运行结果

before sorting!
name: test1 age: 18
name: test2 age: 20
name: test3 age: 15
name: test4 age: 19
after sorting!
name: test3 age: 15
name: test1 age: 18
name: test4 age: 19
name: test2 age: 20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏积累沉淀

反射封装request参数为对象

public class RequestUtil { public static<T> T parseRequset( HttpServletReq...

21310
来自专栏LanceToBigData

JavaSE集合(八)之Map

前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族。以前的时候学习Map的时候没有很认真的去学习,我觉得...

2318
来自专栏曾大稳的博客

c++基础语法

注意:在开发过程中,cpp或者c会被编译为dll或者so供其调用者使用,一般把public的函数定义到h文件,不然调用者都不知道有哪些函数。

1023
来自专栏黑泽君的专栏

java基础学习_集合类04_Map接口、Collections工具类_day18总结

============================================================================= ==...

801
来自专栏LanceToBigData

JavaSE(八)集合之Set

今天这一篇把之前没有搞懂的TreeSet中的比较搞得非常的清楚,也懂得了它的底层实现。希望博友提意见! 一、Set接口 1.1、Set集合概述   Set集合:...

2375
来自专栏IT可乐

Java 集合详解

一、集合的由来   通常,我们的程序需要根据程序运行时才知道创建多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的...

2849
来自专栏Java帮帮-微信公众号-技术文章全总结

第七天 自定义数据类型ArrayList集合【悟空教程】

1855
来自专栏吾爱乐享

java之学习去除ArrayList中重复自定义对象元素

1676
来自专栏Python爱好者

Java基础笔记18

1017
来自专栏黑泽君的专栏

java基础学习_集合类03_用户登录注册案例(集合版)、Set集合、Collection集合总结_day17总结

============================================================================= ==...

1052

扫码关注云+社区

领取腾讯云代金券