用java语言自己开发一个集合类,包含的实例方法如下:向该集合中添加元素时,只能添加某一种类型的

用java语言自己开发一个集合类,包含的实例方法如下:向该集合中添加元素时,只能添加某一种类型的,第1张

下面的Test类就是一个集合类,它只能添加Student类型的对象,代码如下:

import javautilCollection;

import javautilIterator;

public class Test implements Collection<Student>{

public static void main(String[] args){

Test t = new Test();

tadd(new Student());

}

@Override

public int size() {

// TODO Auto-generated method stub

return 0;

}

@Override

public boolean isEmpty() {

// TODO Auto-generated method stub

return false;

}

@Override

public boolean contains(Object o) {

// TODO Auto-generated method stub

return false;

}

@Override

public Iterator<Student> iterator() {

// TODO Auto-generated method stub

return null;

}

@Override

public Object[] toArray() {

// TODO Auto-generated method stub

return null;

}

@Override

public <T> T[] toArray(T[] a) {

// TODO Auto-generated method stub

return null;

}

@Override

public boolean add(Student e) {

// TODO Auto-generated method stub

return false;

}

@Override

public boolean remove(Object o) {

// TODO Auto-generated method stub

return false;

}

@Override

public boolean containsAll(Collection<> c) {

// TODO Auto-generated method stub

return false;

}

@Override

public boolean addAll(Collection< extends Student> c) {

// TODO Auto-generated method stub

return false;

}

@Override

public boolean removeAll(Collection<> c) {

// TODO Auto-generated method stub

return false;

}

@Override

public boolean retainAll(Collection<> c) {

// TODO Auto-generated method stub

return false;

}

@Override

public void clear() {

// TODO Auto-generated method stub

}

}

class Student{

String stuId;

String name;

public Student(){

}

public String getStuId(){

return stuId;

}

public void setStuId(String stuId){

thisstuId = stuId;

}

public String getName(){

return name;

}

public void setName(String name){

thisname = name;

}

}

那就是首先讲数组里面的每一个元素转为字符串,然后数组里面的所有的字符串拼接,之后调用方法得到字符数组的,之后就可以通过集合来 实现了,集合里面定义两个集合,首先讲字符数组放在第一个集合里面,便利字符数组,之后利用集合HashMap的contain方法来判断在集合里面含有指定的字符,没有的话讲值设为1,否则的话讲值加上1

java的集合类都有一个size()方法,就是返回集合的长度,或者叫数量。

java的数组或者字符串,也有一个方法length,或者length()方法用于得到数组或者字符的长度。

listget(1)age

集合就是所谓的相同元素的集合,不会区分什么age,age1只是通过list[0]age,list[2]age,所以只需要取响应的list中的age就行了

你可以获取ArrayList存储这组数据 然后以集合的长度作为随机数的上限,用Random对象的nextInt方法随机取ArrayList对象元素的索引值,利用ArrayList对象的get方法通过索引值获取你需要的数,这样就达到了随机取数的目的

集合分组统计处理, 实现的方法很多,简单的写几种方法供参考;(理解后,自行扩展完善)

方法一:(Java8流处理粗略版) 该版本存在的问题:有些区间没有数据,就不打印显示该区间

import javautil;

import javautilstream;

public class NumberDemo {

public static void main(String[] args) {

ArrayList<Integer> list = new ArrayList<Integer>();

int numbers = 10;// 集合里数字的个数

int space = 1000;// 区间的间隔

// 给集合里添加数字

Random rd = new Random();

for (int i = 0; i < numbers; i++) {

listadd(rdnextInt(5000)); // 集合里每个数字的范围是0~4999

}

funStream(list, space);

}

private static void funStream(ArrayList<Integer> list, int space) {

// 使用流处理 把 数字分组

Map<String, List<Integer>> map = liststream()collect(CollectorsgroupingBy((num) -> {

return "区间:[" + num / space  space + "," + (num / space + 1)  space + ")";// 分组规则

}));

mapforEach((k,v)->{

Systemoutprintln(k);

Systemoutprintln("\t"+vsize()+"个数据");

});

}

}

方法二:(Java8流处理详细版) 就算有的区间是0个数据,照样打印出来

import javautil;

import javautilstream;

public class NumberDemo2 {

public static void main(String[] args) {

ArrayList<Integer> list = new ArrayList<Integer>();

int numbers = 10;// 集合里数字的个数

int space = 1000;// 区间的间隔

// 给集合里添加数字

Random rd = new Random();

for (int i = 0; i < numbers; i++) {

listadd(rdnextInt(5000)); // 集合里每个数字的范围是0~4999

}

funStream(list, space);

}

private static void funStream(ArrayList<Integer> list, int space) {

// 使用流处理 把 数字分组

Map<Integer, List<Integer>> map = liststream()collect(CollectorsgroupingBy((num) -> {

return num / space;// 分组规则

}));

// 获取集合里的最大值

Optional<Integer> maxop = liststream()collect(CollectorsmaxBy(Integer::compareTo));

int max = maxoporElse(0);

// 计算出区间的数量

int groups = max % space == 0  max / space : max / space + 1;

// 打印结果

for (int i = 0; i < groups; i++) {

Systemoutprintln("区间:[" + i  space + "," + (i + 1)  space + ")");

Systemoutprintln("\t有" + (mapget(i)==null0:mapget(i)size()) + "个数据");

// Systemoutprintln("\t"+mapget(i));//把数据打印出来

}

}

}

方法三:(比较传统的方法)

import javautil;

public class NumberDemo3 {

public static void main(String[] args) {

ArrayList<Integer> list = new ArrayList<Integer>();

int numbers = 10;// 集合里数字的个数

int space = 1000;// 区间的间隔

//给集合里添加数字

Random rd = new Random();

for (int i = 0; i < numbers; i++) {

listadd(rdnextInt(5000)); // 集合里每个数字的范围是0~4999

}

fun(list,space);

}

private static void fun(ArrayList<Integer> list, int space) {

Collectionssort(list);//排序

int max= listget(listsize()-1);//取得最大值

int groups = max % space == 0  max / space : max / space + 1;//取得区间的数量

HashMap<Integer,ArrayList<Integer>> map=new HashMap<Integer, ArrayList<Integer>>();//存区间和该区间的数字

for (int i = 0; i < groups; i++) {

mapput(i, new ArrayList<>());

}

//把元素添加到指定的区间

for (int i = 0; i < listsize(); i++) {

mapget(listget(i)/space)add(listget(i));

}

//打印结果

for (int i = 0; i < groups; i++) {

Systemoutprintln("区间:[" + i  space + "," + (i + 1)  space + ")");

Systemoutprintln("\t有"+ mapget(i)size()+"个数据");

//Systemoutprintln("\t"+mapget(i));//把数据打印出来

}

}

}

测试效果如下

区间:[0,1000)

有5个数据

区间:[1000,2000)

有0个数据

区间:[2000,3000)

有1个数据

区间:[3000,4000)

有2个数据

区间:[4000,5000)

有2个数据

查看数组A的元素个数,直接调用 Alength 就可以了

也就是说 数组A有length属性 ,但没有length()方法 也没有size属性

参考代码如下

public class MyDemo{

public static void main(String[] args) {

//查看数组的长度, 使用 数组length属性即可

int[] ary = {1,2,3};

Systemoutprintln(arylength);

//查看字符串的长度, 使用 字符串length()方法即可

String str = "AB";

Systemoutprintln(strlength());

//查看集合的长度, 使用  集合size()方法即可

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

listadd("苹果");

Systemoutprintln(listsize());

}

}

输出结果

3

2

1

以上就是关于用java语言自己开发一个集合类,包含的实例方法如下:向该集合中添加元素时,只能添加某一种类型的全部的内容,包括:用java语言自己开发一个集合类,包含的实例方法如下:向该集合中添加元素时,只能添加某一种类型的、Java中如何输出一个数组中每一个数字及其出现的个数、java怎么判断一个集合里面有几个值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9634691.html

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

发表评论

登录后才能评论

评论列表(0条)

保存