下面的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());
}
}
输出结果
32
1
以上就是关于用java语言自己开发一个集合类,包含的实例方法如下:向该集合中添加元素时,只能添加某一种类型的全部的内容,包括:用java语言自己开发一个集合类,包含的实例方法如下:向该集合中添加元素时,只能添加某一种类型的、Java中如何输出一个数组中每一个数字及其出现的个数、java怎么判断一个集合里面有几个值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)