Set集合
来源:互联网 发布:视频上传网站源码 编辑:程序博客网 时间:2024/05/16 10:20
set 有2个常用子接口 特点:里面没有任何的重复元素 没有对Collection进行扩充
TreeSet: 有序存放
Hashset:散列存放
1————Hashset:散列存放
Hashset:子类中的内容是没有顺序的
package org.lxh.collectiondemo.setdemo;import java.util.HashSet;import java.util.Set;public class HashSetAddDemo {public static void main(String[] args) {Set<String> allSet = new HashSet<String>();allSet.add("A"); // 增加allSet.add("B"); // 增加allSet.add("C"); // 增加allSet.add("C"); // 增加重复元素allSet.add("C"); // 增加重复元素allSet.add("D"); // 增加allSet.add("E"); // 增加System.out.println(allSet);}}
2————TreeSet: 有序存放
TreeSet:进行排序的操作接口
package org.lxh.collectiondemo.setdemo;import java.util.Set;import java.util.TreeSet;public class TreeSetAddDemo {public static void main(String[] args) {Set<String> allSet = new TreeSet<String>();allSet.add("C"); // 增加重复元素allSet.add("D"); // 增加 allSet.add("E"); // 增加allSet.add("A"); // 增加allSet.add("B"); // 增加allSet.add("C"); // 增加allSet.add("C"); // 增加重复元素System.out.println(allSet);}}
3————关于排序的说明
package org.lxh.collectiondemo.setdemo;public class Person implements Comparable<Person> {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String toString() { // 覆写toString() return "姓名:" + this.name + ";年龄:" + this.age;}public boolean equals(Object obj) {//用于比较是否是同一个人 即是否出现重复项
if (this == obj) {return true;}if (!(obj instanceof Person)) {return false;}Person p = (Person) obj;if (this.name.equals(p.name) && this.age == p.age) {return true;} else {return false;}}public int hashCode() { // 这个方法的返回值都是通过一个公式计算的(用于获得名字的hashCode码)
// 此时的公式:名字的hashCode * agereturn this.name.hashCode() * this.age;}public int compareTo(Person o) {//比较大小先比年龄 后比名字if (this.age > o.age) {return 1;} else if (this.age < o.age) {return -1;} else {return this.name.compareTo(o.name); // 比较name}}}
测试类:
package org.lxh.collectiondemo.setdemo;import java.util.Set;import java.util.TreeSet;public class TreeSetPersonAddDemo {public static void main(String[] args) {Set<Person> allSet = new TreeSet<Person>();allSet.add(new Person("张三",30)); // 增加重复元素allSet.add(new Person("李四",30)); // 增加重复元素allSet.add(new Person("王五",31)); // 增加重复元素allSet.add(new Person("赵六",32)); // 增加重复元素allSet.add(new Person("孙七",32)); // 增加重复元素allSet.add(new Person("孙七",32)); // 增加重复元素System.out.println(allSet);}}
Iteartor(重点)
:迭代接口
方法:1---public boolean hasNext() //将指针向下移动,判断是否还有内容
2---public E next() //取出当前指针位置的内容
3---public void romove() //删除当前指针位置的内容
如果想要为Integer接口实例化,则必须使用Collection接口的如下方法:
public Integer<T> integer()
package org.lxh.iteartordemo;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class IteratorDemo01 {public static void main(String[] args) {List<String> allList = new ArrayList<String>();allList.add("A");allList.add("B");allList.add("C");allList.add("D");allList.add("E");Iterator<String> iter = allList.iterator();while (iter.hasNext()) {System.out.print(iter.next() + "、");}}}
删除
package org.lxh.iteartordemo;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class IteratorDemo02 {public static void main(String[] args) {List<String> allList = new ArrayList<String>();allList.add("A");allList.add("B");allList.add("C");allList.add("D");allList.add("E");Iterator<String> iter = allList.iterator();while (iter.hasNext()) {String str = iter.next(); // 取出内容if ("C".equals(str)) {iter.remove();// 删除元素}System.out.print(str + "、");}System.out.println("删除之后的集合:" + allList);}}
allList.remove(str);// 删除元素,使用的是List接口的删除
会出错 因为所有的Iteartor实际上,只是将一个集合的内容交给了Integer输出而已,而如果直接使用了集合的remove()方法,删除的话,则会破坏整个集合的内容,所以输出的时候会出现问题
foreach
在数组的输出上可以试用foreach完成,那么对于集合也同样适用
package org.lxh.foreachdemo;
import java.util.ArrayList;
import java.util.List;
public class ForeactDemo {
public static void main(String[] args) {
List<String> allList = new ArrayList<String>();
allList.add("A");
allList.add("B");
allList.add("C");
allList.add("D");
allList.add("E");
for (String str : allList) {
System.out.print(str + "、");
}
}
}
- Set 集合
- Set集合
- Set集合
- Set集合
- set集合
- Set集合
- Set集合
- Set集合
- Set 集合
- 集合set
- Set集合
- Set集合
- Set集合
- Set集合
- 集合set
- 集合Set
- Set集合
- 集合Set
- V4L2 简介
- setcookie()
- matlab 将矩阵写入文件
- 那年,一步一步学linux c
- 线程池网络模型
- Set集合
- 数据库操作类SQLHelper
- 安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法
- T4 第五周
- 如何判断cin输入结束?
- 中国象棋2
- 宾州中文树库标记以及其解释, Penn Chinese Treebank Tag Set
- Windows下安装ubuntu双系统的几点注意
- 中国象棋3