给你举个例子,这里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装入迭代器。
参考资料:
用循环或者迭代器
创建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中取出数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)