JAVA集合
来源:互联网 发布:知否txt微盘 编辑:程序博客网 时间:2024/06/06 08:38
集合
List----------ArrayList
list 集合是有序的,list的方法不多赘述,逐个去码加深印象
如何移除list字符串集合中重复元素?
如果想确认元素是否重复,首先要判断这两个元素是否相等,以前我们判断两元素之间是否相等有两种方式,但判断的对象不一样
如比较字符串
String s1 = "夏目玲子";String s2 = new String("夏目玲子"); //比较字符串是否相等sop(s1 == s2); //falsesop(s1.equals(s2)); //true
上面打印的sop调用的打印方法,相当于System.out.println();
public static void sop(Object obj){ System.out.println(obj);}
字符串集合
List list = new ArrayList<>(); //父类引用指向子类list.add("夏目");list.add("友人帐");list.add("猫咪");list.add("先生");list.add("先生"); //存储的字符串,把相同的元素去除移除方式
List list3 = new ArrayList<>(); //定义新对象Iterator iterator = list.iterator(); //快捷键:ctrl + 1while (iterator.hasNext()) { //判断是否有下一个元素String str = (String) iterator.next(); if (!list3.contains(str)) { //判断是否包含str元素,加 !list3.add(str);}}sop(list3);list3里面的元素从list中筛选出来,重复元素不被选入
list3当中是否包含某个字符串
sop(list3.contains("夏目")); //判断是否包含
如何移除list匿名对象集合的重复元素?
定义学生类
class Student{private String name;private int age;public Student(){}public Student(String name,int age){this.name = name;this.age = age;}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;} }定义list集合
List<Student> list = new ArrayList<>(); list.add(new Student("susan",22)); //匿名对象list.add(new Student("chare",19));list.add(new Student("blair",31));list.add(new Student("susan",22));list.add(new Student("helton",23));对象打印出来的是地址,因此要覆写 toString 方法
@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]"; //toString方法将地址转变成String类型打印出来}
在学生类覆写equals 方法
@Overridepublic boolean equals(Object obj) { //equals方法Student s = null;if (obj instanceof Student ) { //判断对象是否为Student的类型s = (Student)obj;}else{return false;}return this.name.equals(s.name);}
主方法中高级for循环
List list2 = new ArrayList<>();for (Student stu : list) { //遍历集合,高级for循环 * 需要运用到泛型if (!list2.contains(stu)) {list2.add(stu);}}sop(list); sop(list2); //打印出两组集合运行结果
控制台界面有限,但是已经能看出结果了
set集合
HashSet
取出Set集合中的元素,用迭代器
public static void main(String[] args) {// TODO Auto-generated method stubSet set = new HashSet();set.add("sad");set.add("happy");set.add("sick");set.add("jaw");Iterator iterator = set.iterator(); //遍历集合,取出集合元素while (iterator.hasNext()) {String object = (String) iterator.next();System.out.println(object);}}Set集合中允许有null值
set.add(null); //允许有null值
排除HashSet集合中的重复元素
class Zoo{private String breed;private int age;public Zoo(String breed, int age) {super();this.breed = breed;this.age = age;}public String getBreed() {return breed;}public void setBreed(String breed) {this.breed = breed;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Zoo [breed=" + breed + ", age=" + age + "]";}}
public static void main(String[] args) {Set set = new HashSet<>();set.add(new Zoo("东北虎",2));set.add(new Zoo("非洲狮",4));set.add(new Zoo("北极熊",6));set.add(new Zoo("企鹅",7));set.add(new Zoo(""东北虎",2));System.out.println(set);}
重写 hashcode 和 equals 方法
public int hashCode() {return this.breed.hashCode()+this.age*13; //哈希计算方式}@Overridepublic boolean equals(Object obj) {if (!(obj instanceof Zoo)) {return false;}Zoo z = (Zoo) obj; if (this.age ==z.age) { //如果年龄相等,比较种群return this.breed.equals(z.breed); }return true;}运算结果
TreeSet
对象集合查重排序
class Zooo implements Comparable{private String breed;private int age;public Zooo(String breed, int age) {super();this.breed = breed;this.age = age;}public String getBreed() {return breed;}public void setBreed(String breed) {this.breed = breed;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Zooo [breed=" + breed + ", age=" + age + "]";}}
主方法定义Treeset集合
Set set = new TreeSet<>();set.add(new Zooo("Goose",2));set.add(new Zooo("fun",4));set.add(new Zooo("tee",6));set.add(new Zooo("erro",7));set.add(new Zooo("week",2));System.out.println(set);类Zooo要实现comparable的接口,覆写compareTo的方法
@Overridepublic int compareTo(Object o) {if (!(o instanceof Zooo)) {throw new RuntimeException();}Zooo z = (Zooo) o;if (this.age == z.age) {return this.breed.compareTo(z.breed);}return this.age>z.age?1:-1;}运行结果(按年龄排序):
如果这个代码并非自己的源代码,而又想按姓名排序,那么这里定义一个类就要实现另外一个接口:comparator
class Mooc implements Comparator{ @Overridepublic int compare(Object o1, Object o2) {if (!(o1 instanceof Zooo && o2 instanceof Zooo)) { throw new RuntimeException("类型转换异常”); } Zooo z1 = (Zooo) o1; Zooo z2 = (Zooo) o2; //强转类型return z1.getBreed().compareTo(z2.getBreed());}}向集合传入一个参数
Mooc cm = new Mooc();Set set = new TreeSet<>(cm); //传参运行结果(按名字排序):
小结:
HashSet ---------移重----------覆写hashcode 和 equals 方法
TreeSet-----------移重排序-----------comparable接口,覆写compareTo 方法
取出元素------------迭代器
0 0
- Java集合:集合框架
- java集合---set集合
- JAVA 集合 的 集合
- 【集合】Java集合对比
- JAVA集合-Map集合
- JAVA集合-Set集合
- JAVA集合-List集合
- java集合------Map集合
- Java集合----List集合
- Java集合----Set集合
- Java集合----Map集合
- JAVA集合
- JAVA集合
- Java集合
- JAVA集合
- Java集合
- Java集合
- java 集合
- python字符串格式化
- 【WebService】5.WSDL深入详解
- UIWebView与WKWebView
- 计划安排-英语词汇1
- java字符串
- JAVA集合
- Java中字符编码的问题总结
- oracle 中AWR的时间模式
- STM32 3个硬件SPI的使用
- 通过 “由对象V到对象C的转换” 来说明 Spark_Streaming api中 reduceByKey 与 combineByKey 注意事项
- 讯飞语音在线识别快速接入
- Android数据库SQLite的使用详解(SQLiteOpenHelper,SQLiteDataBase)【看后面简约进阶版】
- centos mysql 安装过程
- oracle数据库误删的表以及表中记录的恢复