No.1
- 回答日時:
>>ファイルの内容を全て読み込ませて、配列に値を格納しているのですが、その際行単位ではなく、配列全体でもし同じ値が既にあった場合に重複させないように格納するには、どうすればよいでしょうか?
どのような処理をやろうとしているのか、質問の意味がわかりません。
推測ですが、データがもしキーでソートされているなら、直前に読み込んだデータとの重複チェックをすればOKです。
もしソートされていないなら、通常は、データのソート処理をこの処理の前に行います。
あるいは、1行読み込むごとに、配列にあるデータと同じか?をチェックして、同じなら配列に登録しないようにします。この方法だと、しだいにチェックする時間が長くなります。
どのような処理をやろうとしているのか、補足説明をお願いいたします。
この回答への補足
回答ありがとうございます。補足説明を追加致します。
>>1行読み込むごとに、配列にあるデータと同じか?をチェックして、同じなら配列に登録しないようにします。
まさにこのことを実現したいのです。お願いします。
No.2
- 回答日時:
Linqを使ってみました。
class Program
{
static void Main(string[] args)
{
int[] intArray = { 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,9,9,10 };
var elements =
(from element in intArray
select element).Distinct();
foreach (var element in elements)
{
Console.Write(element + " ");
}
}
}
ありがとうございます。
まだC#に触れて間が無いため、Linqというものは知りませんでした。
ちなみにArrayListで格納しています。
No.3
- 回答日時:
ArrayListを使ってみました。
class Program
{
static void Main(string[] args)
{
int[] intArray = { 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 2, 2, 1 };
ArrayList arrayList = new ArrayList(intArray);
var elements =
(from element in arrayList.Cast<int>()
select element).Distinct();
foreach (var element in elements)
{
Console.Write(element + " ");
}
}
}
No.4ベストアンサー
- 回答日時:
まず第一に
>配列全体でもし同じ値が既にあった場合に重複させないように格納する
と考えるから、悩む事になるのです。
ここは
配列全体でもし同じ値が既にあった場合には、格納しないで捨てて、次のデータを読みにいく
と考えれば良いのです。
そうすると「特定の値が配列に既存かどうか?」さえ判れば、質問者さんのやりたい事が可能になる訳です。
状況に合わせ、幾つかの方法を用います。
・ソート済みのファイルを読み込んで、配列に格納する場合。
ソートされているので、重複行は、ファイル上で連続しています。
処理は簡単で「直前に配列に格納したのと、今ファイルから読み込んだのが同じ行なら、読んだのを捨てて読み直す」だけです。
これは「直前に配列に格納したもの=配列に既存のもの」なので、やってる事は「値が配列に既存かどうか?」を判断しているのと同義です。
・バラバラのファイルを読み込んで、配列にはソートした状態で格納する場合。
これも処理は簡単で「事前に、元ファイルをソートした作業用ファイル」を作ってしまえば、前述のソート済みファイルの処理と同じ処理で済みます。
・バラバラのファイルを読み込んで、配列には読み込んだ順番で格納していき、重複行だけは無視する場合。
「データが複数のファイルになってて、ファイル単位で配列に追加していく」などの場合も該当。これが一番面倒。
データの規模が小さいなら「配列の先頭から見比べる」でも構わないけど、要素数が数十万件、数百万件になった場合は「ハッシュリスト」を使うなど、工夫が必要でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ExcelVBAでリストの項目に必要数と同じ手配数を分配していくマクロを作りたいです。 1 2022/07/29 18:36
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- Excel(エクセル) エクセルで列の行の重複の検索方法を教えてください。 8 2022/10/11 14:51
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) Excel2019 列と列(2列)の数値の重複を調べたい 1 2023/05/11 13:35
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
【VBA】配列に数式を仕込む方法...
-
VBA listBoxについて
-
VBAでの100万行以上のデータの...
-
SUMPRODUCT関数を用いた最小値
-
エクセル 条件を指定した標準...
-
[エクセル]連続する指定範囲か...
-
配列の受け渡しについて
-
[VBA]改行入りのセルの値を配列...
-
読み込みで一行おきに配列に格納
-
ノーツのデータをVBScriptで取...
-
DataSetから、DataTableを取得...
-
Excel オートフィルタのリスト...
-
VBS 複数ファイル複数行を配列...
-
エクセルVBAで変数をセルに一行...
-
array関数で格納した配列の型を...
-
vba:一覧表から自動転記をしたい
-
.NET - 配列変数を省略可能の引...
-
スプレットシートのGetTextにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
array関数で格納した配列の型を...
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
VBA listBoxについて
-
エクセルで、絶対値の平均を算...
-
配列がとびとびである場合の書き方
-
DataSetから、DataTableを取得...
-
[VBA]改行入りのセルの値を配列...
-
VBA 配列に格納した値の平均の...
-
配列のSession格納、及び取得方...
-
【VBA】ユーザーフォーム リス...
-
エクセルでエラーを無視して一...
-
SUMPRODUCT関数を用いた最小値
-
Excel VBA 配列の分割について
-
Excelのオートフィルタで抽出し...
-
VB6.0 ファイルの一括読込み
-
Excel オートフィルタのリスト...
-
VBAで指定期間の範囲を抽出し、...
おすすめ情報