导航:首页 > 编程语言 > java队列长度

java队列长度

发布时间:2022-06-27 04:38:31

1. java中怎么设置队列容量

通常,无需预先设置长度

2. JAVA有没有可以限制容量大小的队列

这个貌似没有,但是你可以用别的集合,判断当满了的时候,删除最旧的那一条,添加新的一条信息,这个数组和list都可以实现

3. java里面,说到循环队列的存储空间为Q(1:35)包含什么含义,如果front=1,front=

如果是正数就不用加35了,如果是负数才要加35

这一题明显是个小陷阱,开始时候front=rear ,结束了还是front=rear 说明进来的和出去的一样多啊,你看 如果这是进来一个元素rear就加1,变成rear=1(因为是1:35啊,就是说元素只能排在1-35之间,35排完了就满了吗,没有 35排完了如果再进来元素就该排在1的位置上了。而不是36,这你得明白)

好了 进来一个rear加1 出去一个呢,front加1 就这样进来出去,进来出去,到最后front和rear还是相等的,那不就说明进来和出去的一样多嘛。 这样一来最后的元素就和原来的元素一样多了,明显不是0就是35,因为要么队空(0个元素),要么队满(35个元素)

%是求余数用的 10%3=1,就是这个意思 那个公式就是纯粹数学公式,和编程,语言都没关系。
这种题你画一张图最好理解了,当然短一点最好,弄个队列长度为6的,自己动动手,出对入队的画画就全明白了

4. 用java实现循环队列

简单写了下,希望你能看明白

import java.util.ArrayList;

public class SeqQueue {

ArrayList<String> list;

public SeqQueue() {
list = new ArrayList<String>();
}

public String getFirst() {
if (!list.isEmpty()) {
String s = list.get(0);
list.remove(0);
return s;
}
return null;
}

public void insertLast(String s) {
list.add(s);
}

public static void main(String[] args) {
SeqQueue seq = new SeqQueue();
seq.insertLast("111");
seq.insertLast("222");
seq.insertLast("333");
System.out.println(seq.getFirst());
System.out.println(seq.getFirst());
System.out.println(seq.getFirst());
}

}

5. java阻塞队列可以设置成无限大吗

阻塞队列是根据你分配给JVM内存大小来分配的,你分配给JVM内存越大,队列则可存放的越多

6. 高手请帮忙用java版的数据结构,设置3个队列,实现入队出队。

import java.util.ArrayList;

/**
*
* @author 狱韬
*/
public class SnakeBody {
private int size=0; //队列的长度
private int cursor=-1; //指针
private ArrayList<int[]> list=null; //存储器

public SnakeBody() {
list=new ArrayList<int[]>(); //存储器
}

//返回底部的数据
public int[] getLast(){
return list.get(list.size()-1);
}

//返回顶部的数据
public int[] getFirst(){
return list.get(0);
}

//压入数据
public void put(int[] arry){
list.add(arry);
}

//删除底部数据
public void removeLast(){
list.remove(list.size()-1);
}

//重置
public void reSet(){
list=new ArrayList<int[]>(); //存储器
}

//删除顶部数据
public void removeFirst(){
list.remove(0);
}

//返回数据长度
public int size(){
return list.size();
}

public static void main(String[] args) {
SnakeBody data = new SnakeBody();
for(int i=0;i<10;i++){
data.put(new int[]{0,i});
}
System.out.println(data.getFirst()[0]+"-------"+data.getFirst()[1]);
System.out.println(data.getLast()[0]+"-------"+data.getLast()[1]);
data.removeLast();
System.out.println(data.getFirst()[0]+"-------"+data.getFirst()[1]);
System.out.println(data.getLast()[0]+"-------"+data.getLast()[1]);
}
}

7. 数据结构:关于Java实现的一个队列,对其中的扩容步骤有疑问答题的都是我爹

这确实有点奇葩,要么修改resize方法,在进行复制的时候,先判断一下front和rear的值,如果front不为0,说明进行过出队列操作,再判断rear与front的值:

if(front<rear){//fromfronttorear这样就可以去除多余的空位置,让front从0开始}
if(front>rear){
//先复制后半段到新的数组,然后复制前半段到新数组的后面,这就保证0位置的就是队列的头
}

这样的话,就可以理解为什么resize之后将front置为0,。

不知道这样的解释对不对,我看完上面的代码觉得就是这样的。

8. java队列设置为30000多么

阻塞队列是根据你分配给JVM内存大小来分配的,你分配给JVM内存越大,队列则可存放的越多
“队列”这个单词是英国人说的“排”。在英国“排队”的意思就是站到一排当中去。计算机科学中,队列是一种数据结构,有点类似栈,
只是在队列中第一个插入的数据项也会最先被移除,而在栈中,最后插入的数据项最先移除。

9. java编写的队列,网上给出的答案我有些迷惑!!!

你这个只是进队 如果队列满了 只是会打印溢出,并不会对数组integerQueue有任何的影响,所以当 1 2 3 4 5的时候,进来的6并不会加入队列里面。如果出队列你改变的并不是数组,而只是tail,

所以当 队列是 1 2 3 4 5 的时候,出队列了,只是让tail改成3,但是整个数组的长度还是5,所以打印数组的时候还是 1 2 3 4 5
你可以在打印的时候 for(int i=0;i<integerQueue.length;i++)改for(inti=0;i<=tail;i++);

10. 用java语言设计一个先进先先出的队列类

代码仅供参考,如有问题,欢迎追问!

Basket:

importjava.util.concurrent.BlockingQueue;
importjava.util.concurrent.LinkedBlockingQueue;
/**
*定义装苹果的篮子
*
*@authorstone
*@version2013-05-21
*/
publicclassBasket{

//篮子,能够容纳Integer.MAX_VALUE个苹果
BlockingQueue<Object>basket=newLinkedBlockingQueue<Object>(Integer.MAX_VALUE);

//生产苹果,放入篮子
publicvoidproce(Objectobj)throwsInterruptedException{
//put方法放入一个苹果,若basket满了,等到basket有位置
basket.put(obj);
}

//消费苹果,从篮子中取走
publicObjectconsume()throwsInterruptedException{
//take方法取出一个苹果,若basket为空,等到basket有苹果为止(获取并移除此队列的头部)
returnbasket.take();
}

}

BaksetTest:

importorg.apache.log4j.Logger;
publicclassBaksetTest{

staticLoggerlogger=Logger.getLogger(BaksetTest.class);
staticBasketbasket=newBasket();

publicstaticvoidmain(String[]args)throwsException{
try{
Consumecon=newConsume(basket);
Threadthread=newThread(con);
thread.start();
Integernum=0;
while(true){//循环放入数据到队列
num++;
basket.proce(num);
Thread.sleep(1*1000);
if(num>1000000)num=0;
}
}catch(Exceptione){
logger.error("error:",e);
}
}

}

//消费线程,用来消费队列里堆积数据,此线程为阻塞状态
{

Loggerlogger=Logger.getLogger(BaksetTest.class);
Basketbasket;

publicConsume(Basketbasket){
this.basket=basket;
}

@Override
publicvoidrun(){
try{
while(true){//等待从队列取出数据
System.out.println("取出:"+basket.consume());
}
}catch(Exceptione){
logger.error("error:",e);
}
}
}
阅读全文

与java队列长度相关的资料

热点内容
支持dsd硬解压声卡 浏览:768
怎么查看u盘加密区 浏览:181
台电加密是什么格式 浏览:155
php论坛版块在哪个文件夹 浏览:442
暗黑的服务器为什么维护 浏览:623
android内存溢出的原因 浏览:18
标志307的压缩比是多少 浏览:636
服务器启动为什么叫三声 浏览:997
追风筝的人英文pdf 浏览:940
解压小熊手机壳 浏览:346
成都市区建成面积算法 浏览:660
智能家居单片机 浏览:97
买男装用什么app好 浏览:855
文件夹合并了怎么拆开 浏览:260
波段副图源码无未来函数 浏览:89
livecn服务器地址 浏览:259
程序员这个工作真的很吃香吗 浏览:847
程序员和数学分析师待遇 浏览:681
压缩气弹簧怎么拆 浏览:325
华为公有云服务器添加虚拟ip 浏览:211