怎样从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接口,能够对集合中的对象进行排序。

参考技术A

一般是通过迭代期获取数据,因为set集合无序,所以输出不是顺序输出

import java.util.HashSet;
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中取出数据的主要内容,如果未能解决你的问题,请参考以下文章

怎样从java集合类set中取出数据

JAVA Map类代码解析,Map中键值对的两种取出方式

java集合类

Java基础_Set集合

浅谈JAVA集合框架

java 怎样算一个集合有多少kb