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 + "、");
  }
 }

}

 

原创粉丝点击