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

怎样从java集合类set中取出数据,第1张

给你举个例子,这里str就是一个二维数组,我手动输入10个字符串存入该数组,然后用该二维数组的行指针输出

#include

#include

void main()

{

char str[10][20];

int i;

for(i=0;i<10;i++)

gets((str+i));

for(i=0;i<10;i++)

puts((str+i));

}

创建set的iterator方法:

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

Iterator<Object> it = setiterator();

while(ithasNext())//判断是否有下一个

itnext()取出元素

以上方法便是从Set集合中取出数据。

扩展资料:

Java中使用Set接口描述一个集合(集合不允许有“重复值”,注意重复的概念),集合Set是Collection的子接口,Set不允许其数据元素重复出现,也就是说在Set中每一个数据元素都是唯一的。Set接口定义的常用方法如下:

1、size()    获取Set尺寸(即Set包含数据元素的总数)。

2、 add(Object obj)    向Set中添加数据元素obj。

3、remove(Object obj)    从Set中移除数据元素obj。

4 、contains(Object obj)    判断当前Set中是否包含数据元素obj,如果包含返回true,否则返回false。

5、 iterator()    将Set装入迭代器。

参考资料:

java集合类_百度百科

用循环或者迭代器

创建set的iterator

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

Iterator<Object> it = setiterator();

while(ithasNext())//判断是否有下一个

itnext()取出元素

======================================

import javautilHashSet;

import javautilIterator;

import javautilSet;

class ADD{

public String a;

public static void main(String[] args) {

ADD a = new ADD();

aa = "a";

ADD b = new ADD();

ba = "b";

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

setadd(a);

setadd(b);

Iterator<ADD> it = setiterator();

while(ithasNext()){

Systemoutprintln(((ADD)itnext())a);

}

}

}

往集合类set里添加数据:

1、定义一个set对象

Set h=new HashSet();

2、往set中添加数据

hadd("1st");//往里添加一个字符串

Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

Set接口主要实现了两个实现类:

HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。

TreeSet: TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。

set是要用迭代器访问。迭代器好比一个指向元素之间的指针,每移动一次,就指向下一个元素。

迭代器英文叫做Iterator。set有iterator方法,传给迭代器对象进行迭代。

示例如下:

package cnutil;

import javautilHashSet;

import javautilIterator;

import javautilLinkedList;

import javautilList;

import javautilSet;

public class SetDemo {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

Set set=new HashSet();

List list=new LinkedList();

listadd("1");

listadd("2");

setadd(list);

list=new LinkedList();

listadd("1");

listadd("2");

setadd(list);

setadd("a");

setadd("b");

setadd("a");

Iterator it= setiterator();

while(ithasNext())

{

Object ob=itnext();

if(ob instanceof List)

{

Systemoutprintln(ob+" "+"true");

}

else{

Systemoutprintln(ob+" "+"false");

}

}

Systemoutprintln(setsize());

}

}

import javautilHashSet;

import javautilIterator;

import javautilSet;

public class HashSetDemo {

public static void main(String[] args) {

//创建集合对象

//HashSet<String> hs = new HashSet<String>();

Set<String> set = new HashSet<String>();//父类接口引用指向子类对象,因为接口不能实例化所以后面必须跟new  HashSet

//不过需要注意的是,如果使用父类的引用去指向子类的对象,那就没办法去使用子类成员的方法。

//添加集合元素

setadd("Hello");

setadd("World");

//集合转成数组,然后遍历集合对象

/Object[] obj = settoArray();

for(int x=0;x<objlength;x++){

Systemoutprintln(obj[x]);

}/

//迭代器遍历集合

/Iterator<String>  it = setiterator();

while(ithasNext()){

String s = itnext();

Systemoutprintln(s);

}/

//增强for遍历

for(String s:set){

Systemoutprintln(s);

}

}

}

package set_day01;

//使用HashSet存储自定义对象并遍历

//存储的自定义对象无法去重,所以下面重写了equals方法和HashCode方法

/HashSet的add()方法不能去重的原因:

1通过查找源码发现,HashSet的add方法,首先会使用当前集合的每一个元素

和新添加的元素进行hash值(也可以说是地址值的比较),如果hash值不一样,则直接添加新的元素。

2如果hash值一样,则进行比较地址值或者使用equals方法进行其他东西的比较,

所有东西的比较结果都不一样,则添加元素。

实现HashSet存储自定义对象并去重的步骤

第一步:重写hashCode方法,默认返回相等,先比较hash值,如果相等

则进行第二步,执行equals方法

第二步:重些equals方法,默认返回true,即说明两个元素是相等的

不予以添加。

/

import javautilHashSet;

public class HashSetDemo2 {

public static void main(String[] args) {

//创建集合对象

HashSet<Student> hs = new HashSet<Student>();

//创建元素对象

Student s = new Student("liqianqian",18);

Student s2 = new Student("fanhaolan",18);

Student s3 = new Student("fanhaolan",18);

//添加元素对象

hsadd(s);

hsadd(s2);

hsadd(s3);

//遍历集合对象,使用增强for

for (Student student : hs) {

Systemoutprintln(student);

}

}

}

class Student{

String name;

int  age;

public Student(String name,int age){

thisname=name;

thisage=age;

}

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + "]";

}

@Override

public boolean equals(Object obj) {

Student s = (Student) obj;//向下转型,可以获取子类特有成员

//比较年龄是否相等,如果不相等,返回false

if(thisage !=sage){

return false;

}

//比较姓名是否相等,如果相等返回false

if(!(thisname)equals(sname)){

return false;

}

//默认返回true,说明两个学生时相等的

return true;

}

@Override

public int hashCode() {

// TODO Auto-generated method stub

return 1;

}

}

package SetTest;

import javautilCollection;

import javautilIterator;

import javautilTreeSet;

public class TreeSetDemo {

/

@param args

/

public static void main(String[] args) {

// 利用treeset来演示添加string类型的数据

TreeSet<String> ts1=new TreeSet<String>();

ts1add("abc");

ts1add("hello");

ts1add("world");

ts1add("cba");

ts1add("nba");

Iterator<String> it=ts1iterator();

/ while(ithasNext())

{

Systemoutprintln(itnext());

}/

iteratorDemo(ts1);

//添加integer类型的数据

TreeSet<Integer> ts2=new TreeSet<Integer>();

ts2add(5);

ts2add(1);

ts2add(3);

ts2add(2);

ts2add(4);

/Iterator<Integer> it2=ts2iterator();

while(it2hasNext())

{

Systemoutprintln(it2next());

}/

iteratorDemo(ts2);

//添加student类型的数据

TreeSet<StudentDemo> ts3=new TreeSet<StudentDemo>();

ts3add(new StudentDemo("mike", 20));

ts3add(new StudentDemo("jike", 20));

ts3add(new StudentDemo("nike", 20));

ts3add(new StudentDemo("peak", 20));

/Iterator<StudentDemo> it3=ts3iterator();

while(it3hasNext())

{

Systemoutprintln(it3next());

}/

iteratorDemo(ts3);

}

public static void iteratorDemo(Collection<> coll)//定义公共方法

{

Iterator<> it=colliterator();

while(ithasNext())

{

Systemoutprintln(itnext());

}

}

}

学生类

package SetTest;

public class StudentDemo implements Comparable<StudentDemo> {

String name;

int age;

@Override

public int compareTo(StudentDemo s) {

int temp=thisage-sage;

return temp==0thisnamecompareTo(sname):temp;

}

public StudentDemo(String name,int age)

{

thisname=name;

thisage=age;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

thisage = age;

}

@Override

public String toString() {

return thisname+":"+thisage;

}

}

这是因为你没有重写SetClass的equals和hashCode方法

没有重写的时候,对象比较调用的是Object的equals方法,此时你new的每个人都是不同对象,及时名字和长度都一样,也不认为是一个对象

eclipse为例,可以在文件上右键,自动生成这两个方法,生成的时候选择你需要判断equals的属性即可

说明:先从整体介绍了Java集合框架包含的接口和类,然后北京IT培训总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。

1、综述

所有集合类都位于javautil包下。集合中只能保存对象(保存对象的引用变量)。(数组既可以保存基本类型的数据也可以保存对象)。

当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理。从JDK15以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类型(参见具体泛型的内容)。

Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。

Set、List和Map可以看做集合的三大类。

List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。

Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因)。

Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。

对于Set、List和Map三种集合,最常用的实现类分别是HashSet、ArrayList和HashMap三个实现类。(并发控制的集合类,以后有空研究下)。

2、Collection接口

Collection接口是List、Set和Queue接口的父接口,同时可以 *** 作这三个接口。

Collection接口定义 *** 作集合元素的具体方法大家可以参考API文档,这里通过一个例子来说明Collection的添加元素、删除元素、返回集合中元素的个数以及清空集合元素的方法。

3、两种遍历集合的方法Iterator接口和foreach循环  1、Iterator接口

Iterator也是Java集合框架的成员,主要用于遍历(即迭代访问)Collection集合中的元素,也称为迭代器。

以上就是关于字符串存到treeset里面怎么输出全部的内容,包括:字符串存到treeset里面怎么输出、怎样从java集合类set中取出数据、怎样从java集合类set中取出数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8868037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存