Java 集合的基本用法
2016-12-13 19:55 甘雨路 阅读(274) 评论(0) 编辑 收藏 举报package jaxpsax; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; import org.junit.Test; public class Testf { @Test public void testSet() { // 创建集合 Set set = new HashSet<>(); //添加不同的对象 set.add(23); set.add(23); set.add(new String("cc")); set.add(new String("cc")); set.add("cc"); set.add(new Person("lf", 20)); set.add(new Person("lf", 20)); //遍历 for (Object object : set) { System.out.println(object); } //删除对象 set.remove(23); //使用迭代器遍历 Iterator it = set.iterator(); while (it.hasNext()) { Object object = (Object) it.next(); System.out.println(object); } } @Test public void testCompare() { /*// 指定排序方法 Set<Person> set = new TreeSet<>(new Comparator<Object>() { @Override public int compare(Object o1, Object o2) { if (o1 instanceof Person && o2 instanceof Person) { Person p1 =(Person)o1; Person p2 =(Person)o2; return (p1.getName().hashCode()-p2.getName().hashCode()*(p1.getAge()-p2.getAge())); } return 0; } });*/ //创建TreeSet 注意:如果Person类没有实现compareTo会出现类冲突异常 Set<Person> set = new TreeSet<Person>(); // 添加数据 set.add(new Person("lt", 1)); set.add(new Person("lt", 65)); set.add(new Person("lh", 65)); set.add(new Person("ff", 3)); System.out.println(set); } }
package jaxpsax; public class Person implements Comparable{ //属性 private String name; private int age; // set和get方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } // 无参构造方法 public Person() { this(null, 0); } // 有参构造方法 public Person(String name,int age) { // this.name = name; // this.age = age; setName(name); setAge(age); } // 私有的方法 public void learnSomething() { System.out.println("每个人都具有学习能力"); } // 重写toString方法 @Override public String toString() { return "name:"+name+" "+"age:"+age; } // 重写equals方法 @Override public boolean equals(Object obj) { // 判断是否为空 if (obj == null){ return false; } // 判断是否是同一对象应用 if (this == obj){ return true; } // 判断是否是该类的一个实例 if (!(obj instanceof Person)) { return false; } Person p = (Person)obj; //比较内容是否相等 return p.name.equals(name)&&p.age==age; } // 重写hashCode方法(注意hashCode和equals方法中所用的属性必须一致) @Override public int hashCode() { return name.hashCode()-age; } //实现compareTo方法 @Override public int compareTo(Object o) { return name.hashCode()-age; } }