質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

1040閲覧

PriorityBlockingQueueのCompareインタフェースを使用したい

nn.nn

総合スコア3

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/06/23 02:10

前提・実現したいこと

下のものはPriorityBlockingQueueを使用して作ったタートルグラフィックスのプログラムなのですが、これをタートルの大きさが大きい順に取得できるようにComparatorインタフェースを使用したい。

java

1import java.util.Comparator; 2import java.util.concurrent.BlockingQueue; 3import java.util.concurrent.PriorityBlockingQueue; 4import javafx.scene.paint.Color; 5import tg.Turtle; 6import tg.TurtleFrame; 7import java.util.Comparator; 8public class BlokingQueueSimulation3{ 9 BlockingQueue<Turtle> queue = new PriorityBlockingQueue<Turtle>(); 10 TurtleFrame f = new TurtleFrame(); 11 public static void main(String[] args) { 12 new BlokingQueueSimulation3().start(); 13 } 14 void start() { 15 new Thread(new TurtleProducer(10, 50.0)).start(); 16 new Thread(new TurtleProducer(10, 200.0)).start(); 17 new Thread(new TurtleProducer(10, 300.0)).start(); 18 new Thread(new TurtleConsumer(10, 350.0)).start(); 19 new Thread(new TurtleConsumer(20, 200.0)).start(); 20 new Thread(new TurtleConsumer(30,100.0)).start(); 21 } 22 class TurtleProducer implements Runnable { 23 private int n = 0; 24 private double ypos = 200.0; 25 final double xpos = 50.0; 26 TurtleProducer(int n, double ypos) { 27 this.n = n; this.ypos = ypos; 28 } 29 public void run() { 30 for(int i = 0; i < n; i++) { 31 Turtle t = new Turtle(xpos, ypos, 90.0); 32 f.add(t); 33 int speed = (int)((Math.sin(i / 3.0) + 1.5) * 50.0); 34 t.speed(speed); 35 t.setTScale((i+1.0)/20.0); 36 t.setTColor(Color.BLUE); 37 t.moveTo(200.0, 200.0); 38 t.setTColor(Color.BLACK); 39 try { 40 queue.put(t); // タートルをキューに追加する 41 42 } catch(Exception e) { } 43 } 44 } 45 } 46 class TurtleConsumer implements Runnable { 47 private int n = 0; 48 private double ypos = 200.0; 49 final double xpos = 350.0; 50 TurtleConsumer(int n, double ypos) { 51 this.n = n; this.ypos = ypos; 52 } 53 public void run() { 54 for(int i = 0; i < n; i++) { 55 try { 56 Turtle t = queue.take(); // タートルをキューから取り出す 57 queue.comparator(); 58 int speed = (int)((-Math.cos(i / 3.0) + 1.5) * 50.0); 59 t.speed(speed); 60 t.setTColor(Color.RED); 61 t.moveTo(xpos, ypos); 62 f.remove(t); 63 }catch(Exception e) { } 64 } 65 } 66 } 67}

該当のソースコード

java

1queue.comparator();

ここでcomparator()は未定義ですと出てしまいます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

java

1public class BlokingQueueSimulation3{ 2 BlockingQueue<Turtle> queue = new PriorityBlockingQueue<Turtle>(); 3... 4 queue.comparator();
  1. queueは、BlockingQueue型。
  2. BlockingQueue型には、comparator()メソッドは定義されていない。
  3. だから、こうすればいい。

java

1 PriorityBlockingQueue<Turtle> queue = new ...

投稿2021/06/23 04:15

shiketa

総合スコア4061

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問