怎样从java集合类set中取出数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样从java集合类set中取出数据相关的知识,希望对你有一定的参考价值。
用循环或者迭代器
创建set的iterator
Set<Object> set = new HashSet<Object>();
Iterator<Object> it = set.iterator();
while(it.hasNext())//判断是否有下一个
it.next()取出元素
======================================
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
class ADD
public String a;
public static void main(String[] args)
ADD a = new ADD();
a.a = "a";
ADD b = new ADD();
b.a = "b";
Set<ADD> set = new HashSet<ADD>();
set.add(a);
set.add(b);
Iterator<ADD> it = set.iterator();
while(it.hasNext())
System.out.println(((ADD)it.next()).a);
往集合类set里添加数据:
1、定义一个set对象
Set h=new HashSet();
2、往set中添加数据
h.add("1st");//往里添加一个字符串
Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。
Set接口主要实现了两个实现类:
HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。
TreeSet: TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。
一般是通过迭代期获取数据,因为set集合无序,所以输出不是顺序输出
import java.util.Iterator;
import java.util.Set;
public class Test
public static void main(String[] args)
// 初始化set集合
Set<String> set = new HashSet<>();
set.add("1");
set.add("2");
set.add("3");
// 获取set集合数据
for (Iterator iterator = set.iterator(); iterator.hasNext();)
String string = (String) iterator.next();
System.out.println(string);
参考技术B 1、定义一个set对象 Set h=new HashSet();2、往set中添加数据 h.add("1st");//往里添加一个字符串Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。 参考技术C 创建set的iterator
Set<Object> set = new HashSet<Object>();
Iterator<Object> it = set.iterator();
while(it.hasNext())//判断是否有下一个
it.next()取出元素
======================================
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
class ADD
public String a;
public static void main(String[] args)
ADD a = new ADD();
a.a = "a";
ADD b = new ADD();
b.a = "b";
Set<ADD> set = new HashSet<ADD>();
set.add(a);
set.add(b);
Iterator<ADD> it = set.iterator();
while(it.hasNext())
System.out.println(((ADD)it.next()).a);
本回答被提问者采纳
JAVA Map类代码解析,Map中键值对的两种取出方式
Map中键值对的两种取出方式
1,Set keySet:将map中所有的键存入到Set集合。因为set具备迭代器。
所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。
2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,
而这个关系的数据类型就是:Map.Entry
Entry其实就是Map中的一个static内部接口。
为什么要定义在内部呢?
因为只有有了Map集合,有了键值对,才会有键值的映射关系。
关系属于Map集合中的一个内部事物。
而且该事物在直接访问Map集合中的元素。
class MapTest
public static void main(String[] args)
HashMap<Student,String> hm = new HashMap<Student,String>();
hm.put(new Student("lisi1",21),"beijing");
hm.put(new Student("lisi1",21),"tianjin");
hm.put(new Student("lisi2",22),"shanghai");
hm.put(new Student("lisi3",23),"nanjing");
hm.put(new Student("lisi4",24),"wuhan");
//第一种取出方式 keySet
Set<Student> keySet = hm.keySet();
Iterator<Student> it = keySet.iterator();
while(it.hasNext())
Student stu = it.next();
String addr = hm.get(stu);
System.out.println(stu+".."+addr);
//第二种取出方式 entrySet
Set<Map.Entry<Student,String>> entrySet = hm.entrySet();
Iterator<Map.Entry<Student,String>> iter = entrySet.iterator();
while(iter.hasNext())
Map.Entry<Student,String> me = iter.next();
Student stu = me.getKey();
String addr = me.getValue();
System.out.println(stu+"........."+addr);
以下代码摘自B站毕向东老师视频所敲的代码,除了音质有些差,讲的还是很不错的,这里是传送门:
毕向东Java基础教程(适合初学者入门的Java基础视频)
/*
练习:
"sdfgzxcvasdfxcvdf"获取该字符串中的字母出现的次数。
*/
import java.util.*;
class MapTest3
public static void main(String[] args)
String s= charCount("ak+abAf1c,dCkaAbc-defa");
System.out.println(s);
public static String charCount(String str)
char[] chs = str.toCharArray();//将字符串转为字符数组
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
int count = 0;
for(int x=0; x<chs.length; x++)
if(!(chs[x]>='a' && chs[x]<='z' || chs[x]>='A' && chs[x]<='Z'))
continue;
Integer value = tm.get(chs[x]);
if(value!=null)
count = value;
count++;
tm.put(chs[x],count);//直接往集合中存储字符和数字,为什么可以,因为自动装箱。
count = 0;
StringBuilder sb = new StringBuilder();//StringBuilder可以对字符串对象进行快速操作
Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();
while(it.hasNext())
Map.Entry<Character,Integer> me = it.next();
Character ch = me.getKey();
Integer value = me.getValue();
sb.append(ch+"("+value+")");
return sb.toString();
上述代码有以下值得记录的内容
1.将字符串转为字符数组
char[] chs = str.toCharArray();//将字符串转为字符数组
2.StringBuilder可以对字符串对象进行快速操作
StringBuilder sb = new StringBuilder();//StringBuilder可以对字符串对象进行快速操作
3.关于Map.Entry
Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
可以认为是对Map的键和值进行打包,这样,可以通过getKey()和getValue()对其中的值进行访问。
Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();
Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();
while(it.hasNext())
Map.Entry<Character,Integer> me = it.next();
Character ch = me.getKey();
Integer value = me.getValue();
sb.append(ch+"("+value+")");
Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。通过这个集合的迭代器,获得每一个条目(唯一获取方式)的键或值并对值进行更改。Map.Entry中的常用方法如下所示:
(1) Object getKey(): 返回条目的关键字
(2) Object getValue(): 返回条目的值
(3) Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值
Map的总结
Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
1,添加。
put(K key, V value)
putAll(Map<? extends K,? extends V> m)
2,删除。
clear()
remove(Object key)
3,判断。
containsValue(Object value)
containsKey(Object key)
isEmpty()
4,获取。
get(Object key)
size()
values()
entrySet()
keySet()
Map
|–Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
|–HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
|–TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
和Set很像。
其实大家,Set底层就是使用了Map集合。
参考:
[1] https://www.runoob.com/java/java-stringbuffer.html
[2] https://blog.csdn.net/songfeihu0810232/article/details/80156626
以上是关于怎样从java集合类set中取出数据的主要内容,如果未能解决你的问题,请参考以下文章