Set接口

一、Set中常被用的抽象方法 add,  clear,remove, size

二、HashSet、TreeSet是Set的两个实现类, 两个类的方法相同,但是方法运行后结果有的不同

三、HashSet 对比TreeSet

1.相同点:

 (1)没有下标(区别于LIst)

 (2)不可手动排序(区别于LIst),

 (3)元素顺序与加入顺序无关(区别于LIst)

 (4)同一个元素不可加入多次,加入第二次无效,不会报错(区别于LIst)

 (5)遍历方式相同

2.区别:

  (1)HashSet:元素顺序不可测,  与数学上元素集合概念相同

  (2)TreeSet:元素顺序与元素的排序规则有关 ,

  (3)HashSet对元素无要求,而TreeSet对元素有要求,即要求元素必须有排序规则。(区别于List)

  (4)HashSet:底层是算法是Hash算法:所以查询速度快,但是没有ArrayList快

       TreeSet: 底层算法是树: 查询慢,插入快些。

四.遍历Set有两个方式

(1)foreach

(2)iterator

 

例1: HashSet

package com.test;

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

public class SetTest {

// HashSet

public void m1() {

Set<String> set = new HashSet<String>();

set.add("cc");

set.add("aa");

set.add("dd");

set.add("bb");

set.add("dd");

for (String string : set) {

System.out.println(string);

}

Iterator<String> it = set.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

//长度

System.out.println(set.size());

}

 

// HashSet

public void m2() {

Set<Stu> set = new HashSet<Stu>();

Stu stu = new Stu("上明",100);

set.add(stu);

set.add(stu);

set.add(new Stu("小明", 200));

set.add(new Stu("大明", 300));

System.out.println(set.size());//3

for (Stu s : set) {

System.out.println(s);

}

}

public void m3() {

Set<Person> set = new HashSet<Person>();

set.add(new Person("小明", 200));

set.add(new Person("大明", 300));

System.out.println(set.size());//3

for (Person s : set) {

System.out.println(s);

}

}

 

public static void main(String[] args) {

SetTest t = new SetTest();

t.m3();

}

}

 

 

 

四、集合的遍历:

 1.List

  (1)根据下标for循环

  (2)Iterator

  (3)foreach

 2.Set

  (1)Iterator

  (2)foreach

 3.Map

  (1)Iterator

  (2)foreach

 

public class Test {

 // 遍历List

 private void m1() {

  List<String> list = new ArrayList<String>();

  list.add("aaa");

  list.add("bb");

  list.add("cc");

 

  System.out.println("根据下标for循环");

  for (int i = 0; i < list.size(); i++) {

   System.out.println(list.get(i));

  }

 

  System.out.println("Iterator");

  Iterator<String> it = list.iterator();

  while(it.hasNext()) {//关断下面是否有

   String s = it.next();//下移并取出

   System.out.println(s);

  }

 

  System.out.println("foreach");

  for (String xx : list) {

   System.out.println(xx);

  }

 }

 

 // 遍历Set

 private void m2() {

  Set<String> set = new HashSet<String>();

  set.add("aaa");

  set.add("bb");

  set.add("cc");

 

  System.out.println("Iterator");

  Iterator<String> it = set.iterator();

  while(it.hasNext()) {//关断下面是否有

   String s = it.next();//下移并取出

   System.out.println(s);

  }

 

  System.out.println("foreach");

  for (String xx : set) {

   System.out.println(xx);

  }

 }

 

 public void m3() {

  Map<String, Integer> map = new TreeMap<String, Integer>();

  map.put("aa", 11);

  map.put("cc", 33);

  map.put("bb", 22);

 

  System.out.println("Iterator");

  Set<String> set = map.keySet();

  Iterator<String> it = set.iterator();

  while(it.hasNext()) {

   String key = it.next();

   int value = map.get(key);

   System.out.println(key +"   "+ value);

  }

 }

 

 public void m4() {

  Map<String, Integer> map = new TreeMap<String, Integer>();

  map.put("aa", 11);

  map.put("cc", 33);

  map.put("bb", 22);

 

  System.out.println("foreach");

  Set<String> set = map.keySet();

  for (String key : set) {

   int value = map.get(key);

   System.out.println(key+" "+value);

  }

 }

 public static void main(String[] args) {

  new Test().m4();

 }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值