首页 / JAVA / JavaSE set集合学习总结
JavaSE set集合学习总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaSE set集合学习总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2484字,纯文字阅读大概需要4分钟。
内容图文
![JavaSE set集合学习总结](/upload/InfoBanner/zyjiaocheng/643/d9d88aac4d7a472983c84a6f44dc479b.jpg)
Set集合
无序,没有下标,集合中的元素不重复。
HashSet
打印结果去重 且无序。
例子
public static void main(String[] args) {
HashSet<Person> hs = new HashSet<Person>(); //定义了一个Person类
hs.add(new Person("张三",23));
hs.add(new Person("张三",23));
hs.add(new Person("李四",24));
hs.add(new Person("李四",24));
hs.add(new Person("李四",24));
hs.add(new Person("李四",24));
System.out.println(hs.size());
}
当打印对象时 不会自动去重,需要重写equals和hashcode方法,重写的方法再Person类中重写。
LinkedHashSet
可以理解为有序的HashSet
如何存储就如何打印。
例:利用LinkedHashSet去除Arraylist中的重复元素。
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("b");
getSingle(list);
System.out.println(list);
}
private static void getSingle(List<String> list) {
// TODO Auto-generated method stub
LinkedHashSet<String> llist = new LinkedHashSet<String>();
/*
* for (String string : list) { llist.add(string); }
*/
llist.addAll(list);
list.clear();
list.addAll(llist);
}
Treeset
Treeset用来排序。
创建一个Treeset,在去除重复元素的同时排序。
private static void demo1() {
TreeSet<Integer> ts = new TreeSet<Integer>();
ts.add(1);
ts.add(3);
ts.add(3);
ts.add(3);
ts.add(2);
ts.add(3);
ts.add(3);
ts.add(3);
ts.add(3);
ts.add(3);
System.out.println(ts);
}
在比较对象时
private static void demo2() {
TreeSet<Person> ts = new TreeSet<>();
ts.add(new Person("张三", 23));
ts.add(new Person("李四", 24));
ts.add(new Person("王五", 25));
ts.add(new Person("赵六", 26));
ts.add(new Person("张三", 23));
System.out.println(ts);
}
需要重写Person类里的比较器(comparable接口中 实现的comparaTo方法)
以下为ComparaTo方法在Person类中的重写 (Person类要继承Comparable接口。)
public int compareTo(Person o) {
// TODO Auto-generated method stub
int lenth = this.name.length() - o.name.length();//名字长度为主要判断条件
int num = lenth ==0? this.name.compareTo(o.name) : lenth;//年龄为次要条件
return num == 0? this.age - o.age : num;
}
return的值为正 则排在被比对的对象的左边(前边),反之排在右边(后边),为零 则说明是同一个对象,则不加入Treeset
另一种比较器的构造
class ComparByLen implements Comparator
@Override
public int compare(String s1, String s2)
{
int num = s1.length() -s2.length();
return num==0? s1.compareTo(s2) : num;
}
private static void demo5() {
TreeSet ts = new TreeSet(new ComparByLen());
ts.add("aaaa");
ts.add("z");
ts.add("wc");
ts.add("nba");
ts.add("aaa");
System.out.println(ts);
}
此时直接在新创建的类中传入构造器,ComparByLen();
内容总结
以上是互联网集市为您收集整理的JavaSE set集合学习总结全部内容,希望文章能够帮你解决JavaSE set集合学习总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。