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

前言

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

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

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

  由于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

 

你可能感兴趣的:(java开发)