Set 存储的值不重复.
package ds.collections.sets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
/**
* set测试
* @author Hust
* @Time 2011-11-9
*/
public class SetTest {
public static void main(String[] args) {
//testHashSet();
//testHashSetObj();
testTreeSet();
}
//treeSet
public static void testTreeSet(){
Set<String> treeSetTest = Collections.synchronizedSortedSet(new TreeSet<String>());
treeSetTest.add("123");
treeSetTest.add("123");
Iterator<String> it =treeSetTest.iterator();
while(it.hasNext()){
System.out.println(it.next());
}//
//123
TreeSet<String> treeSetTest2 = new TreeSet<String>();
treeSetTest2.add("def");
treeSetTest2.add("abc");
Iterator<String> it2 =treeSetTest2.iterator();
while(it2.hasNext()){
System.out.println(it2.next());
}
/** result is
abc
def
*/
//排序接口
TreeSet<Po2> treeSetComp = new TreeSet<Po2>(new Compara());
treeSetComp.add(new Po2(345,"1234565"));
treeSetComp.add(new Po2(1,"a"));
treeSetComp.add(new Po2(1,"ab"));
treeSetComp.add(new Po2(1,"1"));
treeSetComp.add(new Po2(1,"123"));
treeSetComp.add(new Po2(1,"41255"));
treeSetComp.add(new Po2(1,"132"));
treeSetComp.add(new Po2(1,"一"));
treeSetComp.add(new Po2(1,"二"));
Iterator<Po2> itc =treeSetComp.iterator();
while(itc.hasNext()){
System.out.println(((Po2)itc.next()).toString());
}
/**
1,1
1,a
1,ab
1,一
1,二
1,123
1,132
1,41255
345,1234565
*/
}
//HashSet
public static void testHashSet() {
//方法不同步: Set set = Collections.synchronizedSet(new HashSet());来实现同步
Set<String> set = new HashSet<String>();
System.out.println(set.isEmpty());
set.add("123");
set.add(new String("123")); //String 的hashCode使用比的是值*31 ...
set.add("456");
set.add("789");
set.add("123"); // 重复的abc,set会自动将其去掉
//set还是利用equals()方法进行比较
System.out.println(set.contains("123"));
System.out.println(set.remove("456"));
System.out.println(set.contains("456"));
System.out.println("size=" + set.size());
List<String> list = new ArrayList<String>();
list.add("zxc");
list.add("asd");
list.add("456");
set.addAll(list); // 将list中的值加入set,并去掉重复的abc
System.out.println("size=" + set.size());
for (Iterator<String> it = set.iterator(); it.hasNext();) {
System.out.println("value=" + it.next().toString());
}
}
//测试存放对象
public static void testHashSetObj(){
Set<Po> poSet = Collections.synchronizedSet(new HashSet<Po>());
Po p1 = new Po(1,"123");
Po p2 = new Po(1,"123");
poSet.add(p1);
poSet.add(p2);
System.out.println(poSet.size());
for (Iterator<Po> iterator = poSet.iterator(); iterator.hasNext();) {
Po po = iterator.next();
System.out.println(po.toString());
}
/**
1,123
1,123
*/
poSet.clear();
System.out.println(poSet.size());
Set<Po2> po2Set = Collections.synchronizedSet(new HashSet<Po2>());
Po2 p21 = new Po2(1,"123");
Po2 p22 = new Po2(1,"123");
po2Set.add(p21);
po2Set.add(p22);
for (Iterator<Po2> iterator = po2Set.iterator(); iterator.hasNext();) {
Po2 po2 = iterator.next();
System.out.println(po2.hashCode() + po2.toString());
}
/**
不重写hashCode 与 equals时
15580811,123
15580811,123
重写后
15580811,123
*/
}
}
/**
* 测试类
* @author Hust
* @Time 2011-11-9
*/
class Po {
private int id;
private String name;
public Po(int id,String name){
this.id = id;
this.name = name;
}
public String toString(){
return id+","+name;
}
}
/**
* 测试类
* @author Hust
* @Time 2011-11-9
*/
class Po2 {
private int id;
private String name;
public Po2(int id,String name){
this.id = id;
this.name = name;
}
//重写hashCode
public int hashCode() {
int hash = 0;
hash += (this.name!=null)?this.name.hashCode():0;
hash += 31*hash + this.id;
return hash;
}
//重写equals
public boolean equals(Object o ){
if(o == null) return false;
if(o.getClass() != this.getClass()) return false;
Po2 po = (Po2)o;
if(this.id != po.id || !this.name.equals(po.name))
return false;
return true;
}
public String toString(){
return id+","+name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Compara implements Comparator<Po2>{
@Override
public int compare(Po2 o1, Po2 o2) {
if(o1.equals(o2))
return 0;
else if(o1.getId() >o2.getId())
return 1;
else if(o1.getName().hashCode() > o2.getName().hashCode())
return 1;
return -1;
}
}
分享到:
相关推荐
java set 去重
10.javaSet 接口及其实现类.zip10.javaSet 接口及其实现类.zip10.javaSet 接口及其实现类.zip10.javaSet 接口及其实现类.zip10.javaSet 接口及其实现类.zip10.javaSet 接口及其实现类.zip10.javaSet 接口及其实现类....
Tedu一阶段JavaSet集合和List集合。
java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set 学分绩 java set...
主要介绍了Java Set集合的遍历及实现类的比较的相关资料,需要的朋友可以参考下
Java中Set的深入研究
js中终于有了自己的List,类似于java中的List对象,本文件是源码,亲测有如下方法:add()、has(key)、size()、values()、并集union(Set)、子集subset(Set)、差集difference(Set)、交集intersection(Set)、remove(key...
java中set、map、list的区别与联系
Java相关 public static void main(String[] args) { User u1=new User(1, "zhangsan"); User u2=new User(2, "lisan"); User u3=new User(3, "wangsan"); //放入到Set集合中 Set userset=new ...
下面小编就为大家带来一篇利用Java Set 去除重复object的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
资源内容:该资源是一套包含38张高清技能图谱的资料,涵盖了IT工程师所需的各种技能和知识点。这些技能图谱包括但不限于编程语言、数据库、网络安全、前端开发、后端开发、云计算、人工智能等领域。...
public static void main(String[] args) throws JMSException {// 1.创建ConnectionFac
java 对象集合按字段排序
Set最大的特性就是不允许在其中存放的元素是重复的。接下来通过本文给大家分享java set常用方法和原理分析,需要的的朋友参考下吧
17.SetAndList.java set的简单操作极其hashcode应用 18.Singleton.java java设计模式之单例模式 19.Factory.java 设计模式之工厂模式 20.Swing.java 介绍了java的图形应用 --课程包括了java SE的大部分常用类...
set 源码解析 Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、...
java snmp管理 java snmp管理 java snmp管理 java snmp管理 java snmp管理
参考链接:https://blog.csdn.net/lililidahaoren/article/details/82855662
java set 源码解析 玩儿转算法面试 - 课程官方代码仓 大家好, 欢迎大家来到我在上的实战课程的官方代码仓。这个代码仓将不仅仅包含课程的所有源代码,还将发布课程的更新相关内容,勘误信息以及计划的更多可以丰富...
java中set和get方法的理解 写给初学者